2016-07-11 4 views
-1

Я создаю Delmia Vbscript, который экспортирует некоторые данные в файл Excel. Каждый раз, когда я запускаю эту программу, он должен добавить новый рабочий лист в один и тот же файл Excel, добавив новое значение в отдельную таблицу. Проблема моего кода заключается в том, что каждый раз, кроме первого запуска программы, Woorksheet Object Nothing, и значения не сохраняются в файле Excel.Vbscript Добавить новый лист не работает

Option Explicit 

Dim objGEXCELapp  As Excel.Application 
Dim objGEXCELwkBk  As Excel.Workbook 
Dim objGEXCELSh   As Excel.Worksheet 

Dim strFileName   As String 
Dim strNewFilePath  As String 

Sub CATMain() 

StartEXCEL 

Dim i 
For i = 0 To body.NumberOfSegments - 1 
    Dim segment As SWKSegment 
    Set segment = body.GetSegment(i) 

     WriteInExcel i + 1, 1, segment.Name 
     WriteInExcel i + 1, 2, segment.FullName 
     WriteInExcel i + 1, 3, segment.PositionX 
     WriteInExcel i + 1, 4, segment.EndPositionX 
     WriteInExcel i + 1, 5, segment.PositionY 
     WriteInExcel i + 1, 6, segment.EndPositionY 
     WriteInExcel i + 1, 7, segment.PositionZ 
     WriteInExcel i + 1, 8, segment.EndPositionZ 
     WriteInExcel i + 1, 9, segment.Length 

    Next 

    Dim file 
    file = Dir("C:\temp\ExportData.xls") 
    If Len(file) = 0 Then 
    objGEXCELwkBk.SaveAs strNewFilePath 
    Else 
objGEXCELwkBk.Save 
End If 
objGEXCELwkBk.Close 
objGEXCELapp.Quit 

End Sub 

Здесь есть метод для создания нового woorksheet

Sub StartEXCEL() 

Err.Clear 
On Error Resume Next 
Set objGEXCELapp = GetObject(, "EXCEL.Application") 
If Err.number <> 0 Then 
Err.Clear 
Set objGEXCELapp = CreateObject("EXCEL.Application") 
End If 


objGEXCELapp.Application.Visible = True 

Set objGEXCELwkBk = objGEXCELapp.Workbooks.Open(strNewFilePath) 
If Err.number <> 0 Then 
    Set objGEXCELwkBk = objGEXCELapp.Workbooks.Add 
    Err.Clear 
End If 

objGEXCELwkBk.Worksheets.Add (After = objGEXCELwkBk.Worksheets.Count) 
Set objGEXCELSh = objGEXCELwkBk.Worksheets(objGEXCELwkBk.Worksheets.Count) 

End Sub 
+0

Это не VBScript, это VBA. Пожалуйста, отредактируйте свое сообщение соответственно. –

ответ

0

В начале кода присвоить значение strNewPath:

Sub CATMain() 
    strNewPath = "C:\temp\ExportData.xls" 
    Call StartEXCEL 
+0

Действительно, мой код уже присваивает значение strNewPath, но я хотел написать код, ссылающийся на рабочий лист. Если это может быть полезно, я положу весь код в класс CatMain. – user6575439

Смежные вопросы