Hallo Forum,
ich habe eine ActiveX-Dll mit VB6 erstellt und im Inventor als Addin (mit Autostart) eingebunden. Das Addin reagiert auf das Ereignis "OnCloseDocument". Beim Beenden einer IDW wird die Stückliste automatisch nach Excel exportiert. Es funktioniert auch alles bis auf die Tatsache, dass Excel im Arbeitsspeicher bleibt bis Inventor geschlossen wird. Hat jemand einen Lösungsvorschlag?
Hier der Quellcode:
===================
Private Sub objAppEvents_OnCloseDocument(ByVal DocumentObject As Document, ByVal FullFileName As String, ByVal BeforeOrAfter As EventTimingEnum, ByVal Context As NameValueMap, HandlingCode As HandlingCodeEnum)
If FullFileName = "" Then Exit Sub
If BeforeOrAfter = kBefore Then
pfad = Replace(FullFileName, Split(FullFileName, "\")(UBound(Split(FullFileName, "\"))), "")
dateiName = Replace(FullFileName, pfad, "")
dateiName2 = Split(dateiName, ".")
If dateiName2(1) = "idw" Then
For i = 1 To DocumentObject.Sheets.Count
If DocumentObject.Sheets(i).PartsLists.Count > 0 Then
Set oPartList = DocumentObject.Sheets(i).PartsLists.Item(1)
' Prüfen, ob die Excel-Stückliste geöffnet ist
Dim fehler As Boolean
Dim objFso As Object
Set objFso = CreateObject("Scripting.FileSystemObject")
Dim fileIsClosed As Boolean
If objFso.FileExists(pfad + dateiName2(0) + " Stückliste.xls") Then
If IsFileOpen(pfad + dateiName2(0) + " Stückliste.xls") Then
fehler = MsgBox("Stückliste konnte nicht erstellt werden, da die Excel-Datei geöffnet ist.", vbCritical, "Fehler beim Speichern")
Exit Sub
Else
fileIsClosed = True
End If
End If
'Frage, ob die Stückliste gespeichert werden soll
If MsgBox("Wollen Sie die Stückliste speichern?", vbYesNo, "Stückliste Speichern?") = vbYes Then
'Excel-Variablen deklarieren
Dim oExcelApp As Excel.Application
Dim oExcelWbk As Excel.Workbook
Dim oExcelWks As Excel.WorkSheet
Dim oExcelRange As Excel.Range
'alte Excel-Datei löschen
If fileIsClosed Then
Kill (pfad + dateiName2(0) + " Stückliste.xls")
End If
'Excel-Datei erstellen
On Error Resume Next
Set oExcelApp = GetObject(, "Excel.Application")
If Err.Number Then
Err.Clear
On Error Resume Next
Set oExcelApp = CreateObject("Excel.Application")
oExcelApp.Workbooks.Add
oExcelApp.Workbooks.Add.SaveAs (pfad + dateiName2(0) + " Stückliste.xls")
If Err.Number Then
Err.Clear
MsgBox "Excel kann nicht erstellt werden", vbExclamation, "Excel-Fehler"
End If
End If
On Error GoTo 0
'Datei öffnen
Set oExcelWbk = oExcelApp.Workbooks.Open(pfad + dateiName2(0) + " Stückliste.xls")
'Excel bearbeiten
Set oExcelWks = oExcelWbk.ActiveSheet
'Daten aus Inventor auslesen und
'in Excel speichern und formatieren
.......
'Excel schließen
oExcelRange.Clear
oExcelWbk.Save
oExcelWbk.Close True
oExcelApp.Quit
Set oExcelRange = Nothing
Set oExcelWks = Nothing
Set oExcelWbk = Nothing
Set oExcelApp = Nothing
Else
fehler = MsgBox("Stückliste wurde nicht gespeichert!", vbCritical, "Fehler beim Speichern")
End If
End If
Next
End If
End If
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP