Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Benötige Hilfe bei Makro

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
Autor Thema:  Benötige Hilfe bei Makro (1185 mal gelesen)
Hubsi10
Mitglied


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

Beiträge: 5
Registriert: 24.02.2010

SW 2008 SP5.0

erstellt am: 05. Mrz. 2010 11: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 zuammen,
ich kämpfe schon seit einiger Zeit mit meinem Makro und habe nun keine Ideen mehr für einen neuen Lösungsansatz.
Ich hoffe jemand kann mir weiterhelfen. Achtung: Ich bin Makro-Anfänger.

Makro-Beschreibung

Das unter SolidWorks gestartete Makro öffnet eine Excel-Datei nachdem ich in einem UserForm die Bestell-Nr. eingegeben habe. Aus dieser Datei werden einzeln Zeichnungsnummern ausgelesen und über SolidWorks als PDF und DXF abgespeichert. 

Das Problem

Wenn es mal bei der ersten Bestell-Nr. durchläuft, schafft das Programm es nicht, die zweite xls-Datei zu bearbeiten. Dann bleibt das Makro in dieser Zeile hängen. ActiveSheet.Cells(Zeile, 1).Select

Mir ist auch aufgefallen, dass im Task-Manager die Excel.exe nach Ausführung des Makros mehrmals auftaucht.

Unten eingefügt findet ihr das Sub für den Lieferanten XXX.
Für jede Idee bin ich dankbar.

Gruß
Hubert

Private Sub XXX()

Dim xlsBook          As Excel.Workbook
Dim xlsApp            As Excel.Application
Dim Sheets            As Excel.Sheets
Dim swApp            As SldWorks.SldWorks
Dim swModel          As SldWorks.ModelDoc2
Dim Zeile            As Integer
Dim NummerEndung      As String


Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Open("\\Pfad)
xlsApp.Visible = False
xlsBook.Activate
Zeile = 1
'On Error Resume Next
ActiveSheet.Cells(Zeile, 1).Select
Nummer = ActiveCell.FormulaR1C1
'On Error Resume Next
MkDir ("\\Pfad)

SuchenDrw
While Nummer <> ""

    Set swApp = CreateObject("SldWorks.Application")
    Set Zeichnung = swApp.OpenDoc(DateipfadDrw, swDocDrawing) 'DateipfadDrw ist mit slddrw-Datei

    If Zeichnung Is Nothing Then
        MsgBox (" Fehler beim Laden " + Nummer)
    Else
        Zeichnung.SaveAs2 "\\Pfad\" & BestellNr & "\" & Nummer & ".DXF", 0, True, False
        Zeichnung.SaveAs2 "\\Pfad\" & BestellNr & "\" & Nummer & ".PDF", 0, True, False
        swApp.CloseDoc Zeichnung.GetTitle
    End If

Zeile = Zeile + 1
ActiveSheet.Cells(Zeile, 1).Select
Nummer = ActiveCell.FormulaR1C1
SuchenDrw
Wend
xlsBook.Close
Application.Quit
Load UserForm2
UserForm2.Show
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: 1764
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: 05. Mrz. 2010 11: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 Nur für Hubsi10 10 Unities + Antwort hilfreich

Hallo Hubert

wegen des öfteren vorkommens von Excel
ich denke das liegt an "Application.Quit" sollte das nicht "xlsApp.Quit" sein?

zu dem anderen Problem fällt mir eigentlich nichts ein
bist Du sicher, dass in der Zelle 1,1 in jeder Datei ein Wert steht?

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

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

Hubsi10
Mitglied


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

Beiträge: 5
Registriert: 24.02.2010

SW 2008 SP5.0

erstellt am: 05. Mrz. 2010 12:04    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 schnelle Antwort.

Ich habe mehrere Varianten versucht.
Excle.Application.Quit
Application.Quit
xlsApp.Quit

Nichts schließt Excel "sauber".

Gruß Hubert

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 05. Mrz. 2010 13:04    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 Hubsi10 10 Unities + Antwort hilfreich

Hallo Hubert,

hast du auch ein Set xlsApp = Nothing probiert, um die VBA Referenz auf das Excelobjekt zu löschen? Sonst könnte es passieren, dass das Excel nichtfreigegeben wird bis das Makro (oder sogar SolidWorks?) beendet wird.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

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

Hubsi10
Mitglied


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

Beiträge: 5
Registriert: 24.02.2010

SW 2008 SP5.0

erstellt am: 05. Mrz. 2010 14: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

Hallo Stefan,

ich habe die "Set xlsApp = Nothing " unter der Wend-Zeile eingefügt. Leider kein Erfolg. Sollte ich sie vielleicht anders platzieren?

Es scheint ja doch ein Excel-Schließ-Problem zu sein. Meine Vermutung ist, dass dadurch das im Task-Manager die Excel.exe mindestens zweimal Auftritt, die "ActiveSheet.Cells(Zeile, 1).Select-Zeile" nicht weiß, auf welche Tabelle er zugreifen soll. Ich versuche jetzt mal dem Tabellen-Namen einen einmaligen Namen zu vergeben und ihn dann aufzurufen.

Gruß
Hubert


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

Wuz
Mitglied
Maschinenbauing.

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

Beiträge: 1
Registriert: 29.10.2002

erstellt am: 08. Mrz. 2010 10:16    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 Hubsi10 10 Unities + Antwort hilfreich

Hallo Hubsi10,

bei mir laeuft folgender Programmcode:
'Start Excel
Set xlProg = CreateObject("excel.application")
Set xl1 = xlProg.Application

xlProg.Visible = False
xl1.Workbooks.Open sDateiName

......

'Schliessen und Ende
xl1.Workbooks.Close
xl1.Quit

Set xl1 = Nothing
Set xlProg = Nothing


Gruss

Wuz  

PS:

Ganz oben:
Dim xl1 As Object
Dim xlProg As Object

' Zugriffe auf bestimmtes Excelsheet
xl1.sheets(Excelsheetname).Select
' Bestimmte Zelle bzw. Bereich aktivieren
xl1.activesheet.range('A1').Activate

xl1.activesheet.range(chZelle & CStr(i)).Activat

[Diese Nachricht wurde von Wuz am 08. Mrz. 2010 editiert.]

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