Von Autodesk Inventor 2016 per VBA-Makro (for Applications) Parameter in Excel übertragen (Windows 10 64-bit)
Hallo zusammen,
ich bin mit meiner Google-Suche einfach am Ende angelangt und bräuchte Eure Hilfe.
Ich habe ein CAD-Modell aus Parametern kreiert, welche ich gerne über ein Makro per VBA direkt vom Inventor in ein bestimmtes Excel spielen möchte.
Unterhalb findet Ihr den Code, den ich dazu nehmen würde. Zusätzlich die References als Bild, die ich angewählt habe.
Dieser Code funktioniert problemlos auf meinem Firmen-PC mit der Excel-Version 2010.
Ich habe kürzlich auf meinem Privat-PC auf Office 2016-64bit installiert. Nach Start des Makros hat sich das Excel gleich aufgehängt mit der späteren Fehlermeldung "ActiveX component can't create object or return reference to this object (Error 429)".
Nach langem googlen hat sich herausgestellt, dass die 64-bit Office-Version generell für solche Anwendungen nicht optimal ist und man doch die 32-bit Version versuchen sollte.
Somit habe ich die 32-bit Version installiert. -> Gleiches Ergebnis!
Er hängt sich bei dem Set XL = CreateObject("Excel.Application") auf und gibt dann die o.a. Fehlermeldung aus.
Das Ganze nochmals lt. Forum-Tipp deinstalliert, alle überflüssigen Dateien in der Registry & temporären Dateien per Revo Uninstaller gelöscht und das 32-bit Office wieder installiert -> Erfolglos
Es geht hier bei mir wahrscheinlich um die Registry, aber bitte korrigiert mich wenn ich falsch liege.
Ich habe also weiter gegoogelt und auch gemäß einer Empfehlung von Microsoft-Link die References gecheckt => siehe Bild "Screen".
Im Stack-Link ist dann aber gestanden, dass hier ev. Reste der 64-bit Installation in der Registry verblieben sind, weswegen ich schließlich den Registry-Eintrag umbenannt habe in
Computer\HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}
-> Computer\HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}__
mit der Hoffnung, dass sich dieser komplett neu erstellt (Siehe Bild "Screen1").
Leider hat sich dann zwar der ursprüngliche Registry-Eintrag wieder erstellt, allerdings nur mit einem enthaltenen Schlüssel (siehe Bild "Screen_2").
Jetzt verweise ich glaube ich bei der Excel Application vom Microsoft-Link ("Screen") nicht mehr auf einen passenden Eintrag....aber da bin ich jetzt am Ende und bräuchte Eure Hilfe.
Liegt es an einem falschen Verweis oder an einer falschen/fehlenden DLL?
Kann es etwas mit .NET-Framework zu tun haben (habe lt. Registry Version 4.7)?
Was kann ich jetzt noch prüfen bzw. was kann ich tun?
LG
ich bin mit meiner Google-Suche einfach am Ende angelangt und bräuchte Eure Hilfe.
Ich habe ein CAD-Modell aus Parametern kreiert, welche ich gerne über ein Makro per VBA direkt vom Inventor in ein bestimmtes Excel spielen möchte.
Unterhalb findet Ihr den Code, den ich dazu nehmen würde. Zusätzlich die References als Bild, die ich angewählt habe.
Dieser Code funktioniert problemlos auf meinem Firmen-PC mit der Excel-Version 2010.
Ich habe kürzlich auf meinem Privat-PC auf Office 2016-64bit installiert. Nach Start des Makros hat sich das Excel gleich aufgehängt mit der späteren Fehlermeldung "ActiveX component can't create object or return reference to this object (Error 429)".
Nach langem googlen hat sich herausgestellt, dass die 64-bit Office-Version generell für solche Anwendungen nicht optimal ist und man doch die 32-bit Version versuchen sollte.
Somit habe ich die 32-bit Version installiert. -> Gleiches Ergebnis!
Er hängt sich bei dem Set XL = CreateObject("Excel.Application") auf und gibt dann die o.a. Fehlermeldung aus.
Das Ganze nochmals lt. Forum-Tipp deinstalliert, alle überflüssigen Dateien in der Registry & temporären Dateien per Revo Uninstaller gelöscht und das 32-bit Office wieder installiert -> Erfolglos
Es geht hier bei mir wahrscheinlich um die Registry, aber bitte korrigiert mich wenn ich falsch liege.
Ich habe also weiter gegoogelt und auch gemäß einer Empfehlung von Microsoft-Link die References gecheckt => siehe Bild "Screen".
Im Stack-Link ist dann aber gestanden, dass hier ev. Reste der 64-bit Installation in der Registry verblieben sind, weswegen ich schließlich den Registry-Eintrag umbenannt habe in
Computer\HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}
-> Computer\HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}__
mit der Hoffnung, dass sich dieser komplett neu erstellt (Siehe Bild "Screen1").
Leider hat sich dann zwar der ursprüngliche Registry-Eintrag wieder erstellt, allerdings nur mit einem enthaltenen Schlüssel (siehe Bild "Screen_2").
Jetzt verweise ich glaube ich bei der Excel Application vom Microsoft-Link ("Screen") nicht mehr auf einen passenden Eintrag....aber da bin ich jetzt am Ende und bräuchte Eure Hilfe.
Liegt es an einem falschen Verweis oder an einer falschen/fehlenden DLL?
Kann es etwas mit .NET-Framework zu tun haben (habe lt. Registry Version 4.7)?
Was kann ich jetzt noch prüfen bzw. was kann ich tun?
LG
Sub ParamExport()
Dim iRow As Long
Dim i As Long
Dim XL As Excel.Application
Dim xlWB As Object
Dim xlWS As Object
Set XL = CreateObject("Excel.Application")
' Dateipfad und Name
Set xlWB = XL.Workbooks.Open("C:\Users\XYZ\Desktop\xml-Check.xlsm")
Set xlWS = xlWB.ActiveSheet
XL.Application.Visible = True
Dim oParams As Parameters
Dim sDocName As String
' Blattname
xlWB.Sheets("Tabelle1").Select
Set xlWS = xlWB.ActiveSheet
Const Pi As Double = 3.14159265358979
If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _
ThisApplication.ActiveDocumentType <> kPartDocumentObject Then
MsgBox "Only Part or Assymbly document", vbCritical
Exit Sub
End If
On Error Resume Next
Set oParams = ThisApplication.ActiveDocument.ComponentDefinition.Parameters
iRow = 2
xlWS.cells(iRow, 1).Value = "Type"
xlWS.cells(iRow, 2).Value = "Name"
xlWS.cells(iRow, 3).Value = "Unit"
xlWS.cells(iRow, 4).Value = "Equation"
xlWS.cells(iRow, 5).Value = "Nennwert"
xlWS.cells(iRow, 6).Value = "Export"
xlWS.cells(iRow, 7).Value = "Health"
For i = 1 To oParams.Count
iRow = iRow + 1
Select Case oParams.Item(i).Type
Case kModelParameterObject
xlWS.cells(iRow, 1).Value = "Model"
Case kUserParameterObject
xlWS.cells(iRow, 1).Value = "User"
Case kTableParameterObject
xlWS.cells(iRow, 1).Value = "Table"
End Select
xlWS.cells(iRow, 2).Value = oParams.Item(i).Name
xlWS.cells(iRow, 3).Value = oParams.Item(i).Units
xlWS.cells(iRow, 4).Value = oParams.Item(i).Expression
Select Case oParams.Item(i).Units
Case "mm"
xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value * 10) '* 10, 4) & " mm"
Case "grd"
xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value * (180 / Pi), 4) '& " °"
Case "oE"
xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value, 1) '& " oE"
Case Else
xlWS.cells(iRow, 5).Value = oParams.Item(i).Value
End Select
xlWS.cells(iRow, 6).Value = oParams.Item(i).ExposedAsProperty
Select Case oParams.Item(i).HealthStatus
Case kDeletedHealth
xlWS.cells(iRow, 7).Value = "Deleted"
Case kDriverLostHealth
xlWS.cells(iRow, 7).Value = "Driver Lost"
Case kInErrorHealth
xlWS.cells(iRow, 7).Value = "In Error"
Case kOutOfDateHealth
xlWS.cells(iRow, 7).Value = "Out of Date"
Case kUnknownHealth
xlWS.cells(iRow, 7).Value = "Unknown"
Case kUpToDateHealth
xlWS.cells(iRow, 7).Value = "Up to Date"
End Select
Next
XL.cells.Select
XL.cells.EntireColumn.AutoFit
xlWS.Range("A1").Select
Set xlWS = Nothing
Set xlWB = Nothing
Set XL = Nothing
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 354119
Url: https://administrator.de/contentid/354119
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
alle überflüssigen Dateien in der Registry & temporären Dateien per Revo Uninstaller gelöscht und das 32-bit Office wieder installiert -> Erfolglos
Wenn ich das schon lese, --> Neuinstallation.
Finger weg von solchen möchtegern "Cleanern", die sind die Hauptursache für solche Probleme!
Nach langem googlen hat sich herausgestellt, dass die 64-bit Office-Version generell für solche Anwendungen nicht optimal ist.
Sie ist nicht geeignet weil wenn 32Bit Apps auf die 64Bit Runtime zugreifen wollen das zwei unterschiedliche Welten sind und nicht miteinander kompatibel wenn über die COM-Schnittstelle kommuniziert wird.2016 hat zusätzlich noch einige Bugs mehr in dieser Hinsicht an Bord.
Steht auf den Microsoft Support Seiten zur manuellen Office Deinstallation
https://support.office.com/en-us/article/Manually-uninstall-Office-4e290 ...
Ansonsten neues User-Profil oder Neuinstallation des Rechners.
https://support.office.com/en-us/article/Manually-uninstall-Office-4e290 ...
Ansonsten neues User-Profil oder Neuinstallation des Rechners.