Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VBA Makro Stückliste via Excel exportieren

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 SOLIDWORKS
  
SolidCAM im Einsatz bei der August Weckermann KG
Autor Thema:  VBA Makro Stückliste via Excel exportieren (5630 mal gelesen)
Franky500
Mitglied


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

Beiträge: 5
Registriert: 11.12.2012

erstellt am: 11. Dez. 2012 08:49    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 ein Problem meine Stückliste via Excel zu exportieren. Das Makro soll folgende Aufgaben beherrschen:

1. Stücklisteninformationen in eine Excel Tabelle schreiben.
2. Diese Excel extern als .prn (Leerzeichen getrennt) speichern, schön wäre es wenn das Makro die Dateien durch nummeriert z.B. Stückliste1, Stückliste 2 usw.
3. Die Dateiendung .prn entfernt.
4. Eine Batch-Datei vom Server startet.

Mit VBA für Solidworks kenn ich mich einigermaßen aus hab jetzt das Problem wie ich Excel ansprechen kann. Ich habe mein Makro soweit fertig nur bei Punkt zwei beiß ich mir im Moment noch die Zähne aus hat von euch vielleicht einer eine Idee?

Vielen Dank
Gruß Frank

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

Carsten Heß
Mitglied
Diplom Ingenieur (Konstruktion)


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

Beiträge: 105
Registriert: 23.07.2004

Windows 7 64bit, 12270MB RAM,
3,2 P3 Xeon, Quadro 4000
SW 2014 64bit /SP4.0
MaxxDB SP3.04

erstellt am: 11. Dez. 2012 09:06    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 Franky500 10 Unities + Antwort hilfreich

Hi Frank,

nur mal so aus neugier.
Warum willst du unbedingt excel ansprechen, wenn du die datei anschließend als
Excelfremdes Format ablegen willst?
Warum nciht gleich die Stückliste als .prn speichern?

Gruß
Carsten

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

Franky500
Mitglied


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

Beiträge: 5
Registriert: 11.12.2012

erstellt am: 11. Dez. 2012 10:01    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

Ich gehe den Umweg über Excel weil die Datei eine bestimmte Formatierung (an Position X steht Information Y usw.)  aufweisen muss um diese Anschließend weiter zu verarbeiten, die Formatierung lässt sich mit Excel schnell und einfach erstellen.

Gruß Frank

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 11. Dez. 2012 10:28    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 Franky500 10 Unities + Antwort hilfreich

Hallo Frank

dann brauchst Du zwei Makros, wenn ich Dich richtig verstanden habe,
weil Du ja scheinbar in Excel noch bestimmte Formatierungen vornimmst.
Dann wär es ja einfacher machst ein Excel Makro für die Schritte 2 bis 4.

Meiner Meinung nach, wär es schon eine Überlegung, wie Carsten geschriebn hat
das Ganze gleich im SWX Makro zu erledigen. Falls das autom. zu machen ist.

Du kannst aber auch gleich alles über das Excel Makro erledigen.

------------------
Grüße
Heinz

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

Franky500
Mitglied


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

Beiträge: 5
Registriert: 11.12.2012

erstellt am: 11. Dez. 2012 11:09    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 nahe,
Die Formatierung ist schon durch die Excel-Vorlage in die die Informationen geschrieben werden festgelegt. Ich bekomm die Excel einfach nicht gespeichert auch nicht als .xls oder xlsx. Mein Problem liegt darin Excel "anzusprechen". Der Rest des Makros Punkte 1. , 3. und 4. sind soweit fertig und auch lauffähig.

Gruß Frank

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

Carsten Heß
Mitglied
Diplom Ingenieur (Konstruktion)


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

Beiträge: 105
Registriert: 23.07.2004

Windows 7 64bit, 12270MB RAM,
3,2 P3 Xeon, Quadro 4000
SW 2014 64bit /SP4.0
MaxxDB SP3.04

erstellt am: 11. Dez. 2012 14:13    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 Franky500 10 Unities + Antwort hilfreich

Hi Frank,

ich habe mal meine Programme durchgesehen.
dabei bin ich auf folgende befehle gestoßen.
Vielleicht hilft Dir dies weiter:

Dim objxl As object

objxl = CreateObject("excel.Application")
excelfile = "c:\test.xls"
objxl.Workbooks.Open(excelfile)
objxl.Visible = True

objxl.Worksheets(1).Activate()
objxl.Worksheets(1).Cells(10, 1).Value = "Hallo"
xlbook = objxl.ActiveWorkbook
pfade = "C:\test.prn"
xlbook.SaveAs(pfade)
objxl.quit()

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

Franky500
Mitglied


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

Beiträge: 5
Registriert: 11.12.2012

erstellt am: 13. Dez. 2012 09:56    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

Danke Carsten,
aber ich steh trotzdem noch auf dem Schlauch 

Hab hier mal mein Makro, vielleicht kannst du mir damit jemand weiter helfen.

    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
   
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swView                  As SldWorks.View
    Dim swBOMTable              As SldWorks.BomTableAnnotation
    Dim swTable                As SldWorks.TableAnnotation
    Dim swAnn                  As SldWorks.Annotation
   
    Dim nNumCol                As Long
    Dim nNumRow                As Long
    Dim sRowStr                As String
    Dim i                      As Long
    Dim j                      As Long
   
    Set swApp = Application.SldWorks
    swApp.Visible = True
    Set swModel = swApp.ActiveDoc
   
    If swModel Is Nothing Then
        Call MsgBox("keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If
   
    Dim ArtikelNr As String
    ArtikelNr = swModel.CustomInfo("Artikel-Nr.")
   
    Dim Excelpfad  As String
    Dim ExcelAppId  As VbCallType
    Dim ExcelSheet  As Object
    Dim wbook      As Object
   
     
    Rem Pfad anpassen für Speicherort Excel-Programm
    Excelpfad = "C:\Program Files (x86)\Microsoft Office\Office14\Excel.EXE C:\Users\f.wolters\Desktop\Makro\Sicherung\proin_vorlage.XLSX"
    ExcelAppId = Shell(Excelpfad, 1)
   
    Rem Pfad anpassen für Speicherort Vorlagendatei Excel-Stücklistenvordruck
    Set ExcelSheet = GetObject("C:\Users\f.wolters\Desktop\Makro\Sicherung\proin.XLSX")
   
    Rem Baugruppen ArtikelNr in Excel schreiben
    ExcelSheet.Application.Cells(1, 4).Value = ArtikelNr
   
    Set swSelMgr = swModel.SelectionManager
    Set swBOMTable = swSelMgr.GetSelectedObject5(1)
    Set swTable = swBOMTable
    Set swAnn = swTable.GetAnnotation
   
    nNumCol = swTable.ColumnCount
    nNumRow = swTable.RowCount

    Rem Stückliste nach Excel
   
    For i = 1 To nNumRow - 1
           
            Rem Artikelnummer Rohmaterial
            ExcelSheet.Application.Cells(i, 9).Value = swTable.Text(i + 1, j + 1)
           
            Rem Menge
            ExcelSheet.Application.Cells(i, 11).Value = swTable.Text(i + 1, j + 2)
           
            Rem Länge
            ExcelSheet.Application.Cells(i, 15).Value = swTable.Text(i + 1, j + 3)
           
    Next i
   
    Rem Excel speichern
   
   
   
    Rem Dateiendung entfernen
    Call rename
   
End Sub

Sub rename()
Dim retVal
retVal = Shell("C:\Users\f.wolters\Desktop\Makro\rename.bat", 1)
End Sub

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 13. Dez. 2012 13:45    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 Franky500 10 Unities + Antwort hilfreich

Hallo Franky500

Was funktioniert nicht?

ich versteh nicht ganz warum Du das Öffnen von Excel, meiner Meinung nach, so kompliziert machst.
Ich mach das bei meinen Makro so
das hat den Vorteil, dass es egal ist wo Excel gespeichert ist

  On Error Resume Next
  ' Versuch einen Verweis auf Excel zu bekommen
  Set excel = GetObject(, "Excel.Application")
  ' Wenn ein Fehler auftritt dann läuft Excel noch nicht
  If Err.Number <> 0 Then excel_NOK = True
  Err.Clear
  ' Wenn Excel noch nicht läuft, dann wird es gestartet
  If excel_NOK = True Then
    Set excel = CreateObject("excel.application")
  End If
  excel.Visible = True

eine Excel-Datei öffnen ich dann mit
  excel.workbooks.open "Dateiname" 

"swModel.CustomInfo" würde ich auch nicht mehr verwenden, weil lt. Online-Hilfe
durch "CustomPropertyManager Property (IModelDocExtension)" ersetzt wurde und bei neuen Makro, würde ich nur mehr die empfohlenen Methoden verwenden.

noch eine Frage:
für was benötigst Du die BAT-Datei rename?
Dateien umbenennen funktioniert auch von VBA aus mit der Funktion "name"

------------------
Grüße
Heinz

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

Franky500
Mitglied


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

Beiträge: 5
Registriert: 11.12.2012

erstellt am: 13. Dez. 2012 14:01    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 Heinz danke für deine Tipps, werde das "Name" und den Start Vorgang von Excel einbauen, die bat Lösung war nur für den Anfang, Mein Problem besteht darin die erzeugte Excel gespeichert zu bekommen.

Gruß Frank

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

riesi
Mitglied
CAD-Admin


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

Beiträge: 1073
Registriert: 06.05.2002

SWX Premium 2020-Sp5

erstellt am: 13. Dez. 2012 14: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 Franky500 10 Unities + Antwort hilfreich

Mal'ne ganz andere Frage: Wäre es nicht einfacher, direkt vom Client per VBA die Stückliste aus zu lesen?

Wir steuern von unserem ERP-Client direkt SolidWorks an und holen aus SolidWorks die benötigten Information, bzw. schreiben zurück nach SolidWorks.

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



Konstrukteur (m/w/d)

Kurtz Ersa ist ein Maschinenbauer für die produzierende Industrie in Familienbesitz mit fast 250-jähriger Tradition. Daher fühlen wir uns verpflichtet, unsere Strategie mit 1.500 Mitarbeitern auf ein langfristiges, gesundes und nachhaltiges Wachstum auszurichten.

In unseren drei Geschäftsfeldern Electronics Production Equipment, Automation und Moulding Machines werden Maschinen, Anlagen und Werkzeuge gefertigt....

Anzeige ansehenKonstruktion, Visualisierung
nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 13. Dez. 2012 14:48    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 Franky500 10 Unities + Antwort hilfreich

Hallo Franky

meines Wissens geht speichern über das "Workbook" Objekt

Wenn Du Excel wie von mir oben beschrieben öffnest
sollte das mit "excel.activeworkbook.saveas" funktionieren

Die Paramter dafür schaust Du Dir am besten in der VBA Umgebung von Excel an.

------------------
Grüße
Heinz

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)2024 CAD.de | Impressum | Datenschutz