traxtormer
Goto Top

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! face-confused

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
references
screen
screen_1
screen_2

Content-Key: 354119

Url: https://administrator.de/contentid/354119

Printed on: April 18, 2024 at 23:04 o'clock

Mitglied: 134464
134464 Nov 09, 2017 updated at 09:12:13 (UTC)
Goto Top
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.
Member: Traxtormer
Traxtormer Nov 10, 2017 at 10:34:54 (UTC)
Goto Top
Also ich habe ja schon das gesamte 32-bit Office neu installiert, und zwar ohne den "Cleaner"....das hat leider nicht funktioniert.
Daraufhin habe ich das Gleiche nochmal mit dem Cleaner probiert....auch erfolglos...die Not macht dann kreativer! face-smile

Ich denke die 32-bit Version wird schon passen, allerdings brauche ich eine "saubere" Office-Registry!

Wie kann ich das erreichen?

LG
Mitglied: 134464
134464 Nov 10, 2017 updated at 14:39:07 (UTC)
Goto Top
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.