Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Inventor + Excel

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Inventor + Excel (2507 mal gelesen)
Dammfeld
Mitglied
Maschinenbautechniker


Sehen Sie sich das Profil von Dammfeld an!   Senden Sie eine Private Message an Dammfeld  Schreiben Sie einen Gästebucheintrag für Dammfeld

Beiträge: 89
Registriert: 01.08.2001

HP Intel(R) Core(TM) i5 CPU 660
3,33 GHZ - 8GB RAM
NVidia Quadro 2000
Windows 7- 64-bit
Inventor2012-SP2

erstellt am: 26. Okt. 2005 08:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 26. Okt. 2005 09:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dammfeld 10 Unities + Antwort hilfreich

Hi,

dein Code sieht sauber aus. Das Einzige, was ich immer anders mache ist, nicht das bestehende Excel Objekt über GetObject zu bekommen, sondern ich erstelle immer ein neues Objekt mit CreateObject. Und das ist dann auch in der Regel mit oExcel.Quit weg. Schwierig… Wo anders in der Klasse hast du kein CreateObject? Auf jeden Fall gibt es für

pfad = Replace(FullFileName, Split(FullFileName, "\")(UBound(Split(FullFileName, "\"))), "")

Pluspunkte  Zeigt, dass du was kannst 

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Emick
Mitglied
Programmierer


Sehen Sie sich das Profil von Emick an!   Senden Sie eine Private Message an Emick  Schreiben Sie einen Gästebucheintrag für Emick

Beiträge: 22
Registriert: 18.09.2005

Inventor VBA

erstellt am: 26. Okt. 2005 09:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dammfeld 10 Unities + Antwort hilfreich

Hi

Ich glaube der Fehler ist, ADD und Open nacheinader. Ich verstehe sowieso nicht warum nach ADD noch Open. Add ist danach offen.

Gruss
Emick

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 26. Okt. 2005 09:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dammfeld 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Emick:
Hi

Ich glaube der Fehler ist, ADD und Open nacheinader. Ich verstehe sowieso nicht warum nach ADD noch Open. Add ist danach offen.

Gruss
Emick


Ja, könnte sein... Und das hier ist auch komisch:

Code:

oExcelApp.Workbooks.Add
oExcelApp.Workbooks.Add.SaveAs (pfad + dateiName2(0) + " Stückliste.xls")

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dammfeld
Mitglied
Maschinenbautechniker


Sehen Sie sich das Profil von Dammfeld an!   Senden Sie eine Private Message an Dammfeld  Schreiben Sie einen Gästebucheintrag für Dammfeld

Beiträge: 89
Registriert: 01.08.2001

erstellt am: 26. Okt. 2005 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für Eure Hilfe!

Ich habe Eure Tipps sofort umgesetzt, aber das Problem wurde damit leider nicht behoben.

Es lag an folgender Zeile (die ich nicht gepostet hatte):
oExcelWks.PageSetup.LeftMargin = Application.InchesToPoints(0.393700787401575)

Gruß
Dietmar

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz