Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  per Macro Teileliste aus idw nach xls exportieren (via Template)

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:  per Macro Teileliste aus idw nach xls exportieren (via Template) (1317 mal gelesen)
HankMoody
Mitglied
Konstrukteur


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

Beiträge: 86
Registriert: 19.12.2009

erstellt am: 12. Jun. 2015 13:03    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 zusammen,

ich bin gerade erst dabei, mich in die Thematik VBA einzuarbeiten und entsprechend noch ein ziemlicher NOOB 

Wunschvorstellung:

A) ich würde gerne für unsere Zwecke ein Macro erstellen, mit dem ich direkt aus der idw im Inventor auf Knopfdruck eine Excel-Stückliste nach Template befüllen kann und anschließend die Datei im jeweiligen Ordner der Zeichnung abspeichern kann (nicht automatisch, es soll nur das Dialogfenster zum Speichern öffnen - idealerweise in dem Ordner der Zeichnung).

B) die Stückliste sollte noch zusätzlich mit Benennung und kundenspez. Nummer der Hauptbaugruppe aus der Zeichnung befüllt werden (aus den iProperties der BG).

aktuelles Vorgehen ohne INV-internes Macro:

A) Stückliste wird als Excel aus idw exportiert
B) externes Excel-Makro muss geöffnet werden
C) die in erstellte Excel-Liste muss per Dialogfenster angewählt werden
D) Datentransfer in Stückliste nach Kundenlayout (Template.xls)
E) Baugruppenname und kundenspez. Nummer muss manuell eingetragen werden
F) abspeichern

bisherige Selbstversuche:
nach etwas Recherche hier im Forum bin ich auf den Thread (http://forum.cad.de/foren/ubb/Forum258/HTML/001256.shtml) von "Didikalle" und "noctis79" gestoßen und habe mich dann an diversen Anpassungen versucht. Leider komme ich nicht wirklich weiter: wenn ich das Macro bei geöffneter idw laufen lasse, passiert überhaupt nichts. Im Debugger kommt unter Quickwatch unter Expression "mehrere" und als Value "Expression not defined in context". Leider kann ich damit nichts anfangen.

Bisher schaut der Code auf Basis des o.g. Threads folgendermaßen aus (Anpassungen der auszulesenden werte / iProperties noch ausstehend):

Code:

Sub StuLi_KD1_DE_EN()
Dim oapp As Inventor.Application

Set oapp = ThisApplication

Dim oDoc As Inventor.DrawingDocument

If oapp.ActiveDocument.DocumentType <> kDrawingDocumentObject Then
    MsgBox "Funktion ist nur in Zeichnungen zulässig"
    Exit Sub
End If

Set oDoc = oapp.ActiveDocument

Dim oOptions As NameValueMap

Dim oName, oStart, oTemplate, oFullFileName, oFileName, oXLSFileName  As String
Dim oLength As String
Dim oFit As Boolean
Dim oProp As PropertySet
Dim i As Property
Dim POS As String

Set oProp = oDoc.PropertySets.Item("Design Tracking Properties")

For Each i In oProp
    If i.DisplayName = "Bezeichnung" Then
        oDESCRIPTION = i.Expression
    ElseIf i.DisplayName = "Bauteilnummer" Then
        oPartNumber = i.Expression
    End If
   
Next

oFileName = oPartNumber & "." & oDESCRIPTION

Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap


oXLSFileName = oFileName & ".xls"
'oName = Name des Excel- Sheets
oName = "test"
'oStart = Start- Zelle
oStart = "A5"
'oTemplate = Pfad zum xls- Template
oTemplate = "U:\Vorlagen_INV2013\Stueli\BMW Makro\template2.xls"
'oFit bewirkt, dass die Zellen eingepasst werden
'true - Zellen werden angepasst
'false - Zellen werden nicht angepasst
oFit = True

Call oOptions.Add("TableName", oName)
Call oOptions.Add("StartingCell", oStart)
Call oOptions.Add("Template", oTemplate)
Call oOptions.Add("AutoFitColumnWidth", oFit)

If oDoc.ActiveSheet.PartsLists.Count = 0 Then
    MsgBox "Keine Stückliste vorhanden!", vbCritical + vbOKOnly, "Stückliste fehlt"
    Exit Sub
ElseIf oDoc.ActiveSheet.PartsLists.Count > 1 Then
    MsgBox "Es sind mehrere Stücklisten vorhanden!" & vbCrLf & "Es wird die erste Stückliste verwendet!" _
    , vbOKOnly + vbInformation, "Mehrere Stücklisten"
End If

Call oDoc.ActiveSheet.PartsLists.Item(1).Export(oXLSFileName, kMicrosoftExcel, oOptions)

'************************* Ab hier der EXCEL- PART ****************
'Im Inventor VBA- Projekt auf Extras - Verweise und
'die Microsoft Excel Library hinzufügen
'******************************************************************

Dim oExl As New Excel.Application

On Error Resume Next
Set oExl = GetObject(, "Excel.Application")
  If Err.Number Then
    Err.Clear
    On Error Resume Next
    Set oExl = CreateObject("Excel.Application")
    If Err.Number Then
      Err.Clear
      MsgBox "Kann Excel nicht öffnen."
    End If
  End If
 
oExl.Workbooks.Open (oXLSFileName)
With oExl.ActiveWorkbook
  .Sheets(oName).Cells(2, 1) = oPartNumber
  .Sheets(oName).Cells(2, 5) = oDESCRIPTION
  .Close 1
End With

End Sub



Falls es hilft, kann ich auch den Code des bestehenden Excel-Macros mal posten...!?

Bin wirklich für jede Hilfestellung dankbar!

Grüße
Stefan

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Jun. 2015 09:58    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 HankMoody 10 Unities + Antwort hilfreich

Hi Stefan,

versuche mal den letzten Teil des Codes so zu ändern:

Code:
With oExl.ActiveWorkbook
  .Sheets(oName).Cells(2, 1).value = oPartNumber
  .Sheets(oName).Cells(2, 5).value = oDESCRIPTION
' .Close 1
End With
oExl.Visible=True


So siehst du zumindest schonmal, ob irgendetwas in die Tabelle geschrieben wird.

------------------
MFG

Chris

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

HankMoody
Mitglied
Konstrukteur


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

Beiträge: 86
Registriert: 19.12.2009

erstellt am: 19. Jun. 2015 14:50    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 Chris,

vielen Dank für deine Antwort...habe schon fast nicht mehr mit Resonanz gerechnet 
Leider passiert auch jetzt nicht wirklich etwas: ich sehe erst den blauen Inventor-Kringel und dann öffnet sich ganz kurz ein Fenster (kann nicht einaml erkennen, welches Programm) und schließt sofort wieder...das wars.

Bin echt grad total im Blindflug unterwegs...

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Jun. 2015 15:11    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 HankMoody 10 Unities + Antwort hilfreich

Hallo

Die CreateObject Methode erstellt, außer ich irre mich gerade, eine unsichtbare Instanz. Im Taskmanager müßte aber eine excel.exe in der Prozessliste auftauchen. Setz mal ein

Code:
oExl.Visible

oberhalb dieses Teils

Code:
oExl.Workbooks.Open (oXLSFileName)
With oExl.ActiveWorkbook
  .Sheets(oName).Cells(2, 1) = oPartNumber
  .Sheets(oName).Cells(2, 5) = oDESCRIPTION
  .Close 1
End With

End Sub


Vielleicht wird's dann etwas heller. 

------------------
MfG
Ralf

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 22. Jun. 2015 10:07    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 HankMoody 10 Unities + Antwort hilfreich

Hallo,

hattest du das .Close auskommentiert?
Wenn nicht, dann mach das mal, sonst passiert das, was du beobachtet hast. Das Programm, was du nicht erkennen konntest war Excel.

------------------
MFG

Chris

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