| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | CO2 bindende Mauern von NASKA robotics oder: … nur noch schnell die Welt retten |
Autor
|
Thema: Excel-Makro meckert (1778 mal gelesen)
|
Jonny k Mitglied
Beiträge: 6 Registriert: 04.04.2014
|
erstellt am: 28. Apr. 2014 15:46 <-- editieren / zitieren --> Unities abgeben:
Hallo da draußen, ich habe folgendes Problem. Und zwar habe ich eine einfache Konfiguration in Form eines Imbus erstellt um ein Makro in Excel zutesten. Die Konfigurationstabelle sollte als Bild angehängt sein. Das Makro soll eine Konfiguration eines Teiles in Solidworks öffnen. Nun zum Makro: Das Makro habe ich aus einem älteren Threat genommen und mit meinen eher bescheidenen VBA-Kenntnissen versucht auf meine Tabelle zuzuschneiden. Code: Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As _ Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As _ String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Sub Imbus_oeffnen() Const BezSpalte = 1 Const SLDPRTPath = "C:\Users...\Imbus\" If TypeName(Selection) <> "Range" Then Exit Sub ElseIf Selection.Cells.Count <> 1 Then Exit Sub ElseIf Selection.Column <> 1 Or Selection.Row = 1 Then Exit Sub ElseIf Selection.Value = "1" Then Exit Sub ElseIf Dir(SLDPRTPath & Selection.Value & ".SLDPRT") = "" Then Call MsgBox("Teil im Ordner #!!!Einzelteile!!!# nicht gefunden!", vbExclamation, "Fehler") End If ShellExecute 0, "Open", SLDPRTPath & Selection.Value & ".SLDPRT", "", "", 1 End Sub Wenn ich das Makro nun für den Imbus_5 (wie im Bild gezeigt) ausführen möchte kommt halt die Fehlermeldung "Teil im Ordner nicht gefunden".. Ich weiß nicht was bei dem Code noch nicht stimmt, dass der Fehler nicht mehr kommt. Ich hoffe ihr könnt mir helfen! Gruß Johannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 28. Apr. 2014 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny k
Nochmal, nachdem du meine PM wohl nicht ganz verstanden hast: Wie heisst die Datei, welche du öffnen möchtest? In welchem Pfad befindet sich die Datei? Ist der Name der Datei und der Name in der Exceltabelle identisch? ------------------ Viele Grüße, THSEFA "Nichts ist so hart wie das Leben! Wenn man sagt, was man denkt, muss man mehr als alles geben!..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny k Mitglied
Beiträge: 6 Registriert: 04.04.2014
|
erstellt am: 28. Apr. 2014 16:45 <-- editieren / zitieren --> Unities abgeben:
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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: 29. Apr. 2014 07:51 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny k
Hallo Johannes, ich weiß ja nicht, was THSEFA mit dir per PM abgekaspert hat (deswegen ist es auch in meinen Augen nicht gut Antworten oder auch weitere Fragen per PM zu machen), aber in seiner Antwort sind alle Stichworte drin, an Hand derer du das bei dir nachvollziehen können müsstest. Du zeigst uns weder dein vollständiges Makro, ich bin mir immer noch nicht sicher, ob du dieses Makro in die Konfigurationstabelle eingebunden hast oder ob es ein weiteres Exceldokument mit dem Makro ist, du hast nicht beantwortet, wie dein Teil heißt, was du öffnen möchtest. Mir ist auch nicht ganz klar, aus welcher Zeile die von dir angesprochene Fehlermeldung kommt, also deine eigene Fehlermeldung, wenn der Dir-Befehl nichts findet oder aus dem ShellExecute. Wenn es deine eigene Meldung ist findet es schlichtweg die Datei nicht: SLDPRTPath & Selection.Value & ".SLDPRT" SLDPRTPath steht bei dir als Konstante auf "C:\Users...\Imbus\" - hast du dein Verzeichnis vielleicht richtigerweise Inbus mit einem N benannt? (Ich geh mal davon aus, das an der Stelle mit den Punkten der richtige Pfad zu deinem Benutzer oder zu public steht?) Selection.Value sollte nach deinem Screenshot "Imbus_5" liefern - hier verschrieben? Dann hängst du ein ".SLDPRT" dran, und bekommst als Gesamtkonstrukt C:\Users...\Imbus\Imbus_5.SLDPRT. Diese Datei gibt es wohl nicht. Hast du da nach geschaut? Irgendwo verschrieben? Wolltest du doch eine andere Datei aufrufen, da Imbus_5 der Konfigurationsname ist? Es ist recht schwer gerade solche Problem per Glaskugel zu lösen, aber die Fehlermeldung aus deinem Makro ist eigentlich eindeutig. Ciao, Stefan PS: zur Prüfen auf die Existenz einer Datei benutze ich lieber eine kleine Funktion von namens FileExists (und DirExists) von http://www.vb-tec.de/fdexists.htm , hat zwaqr jetzt nichts mit deinem aktuellen Problem zu tun, passt aber gerade so schön als Hinweis ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny k Mitglied
Beiträge: 6 Registriert: 04.04.2014
|
erstellt am: 29. Apr. 2014 08:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, also bei >Const sldprt = "W:\Datenbank SW\Imbus\" geb ich den Dateipfad für die Datei Imbus an. Nun möcht ich ja von diesem Imbus die Konfiguration Imbus_5 öffnen. Und ja Imbus_5 ist der Konfigurationsname (W:\Datenbank SW\Imbus\Imbus_5.SLDPRT lässt sich so nicht finden richtig..). Sollt ich damit das besser funktioniert die Konfigurationen einzeln abspeichern? Gruß Johannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 29. Apr. 2014 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny k
Zitat: ElseIf Dir(SLDPRTPath & Selection.Value & ".SLDPRT") = "" Then Call MsgBox("Teil im Ordner #!!!Einzelteile!!!# nicht gefunden!", vbExclamation, "Fehler") End If ShellExecute 0, "Open", SLDPRTPath & Selection.Value & ".SLDPRT", "", "", 1
Hallo, du hast also eine Datei I*BUS.sldprt mit den Konfigurationen I*BUS_5, I*BUS_6 und versuchst nun eine Datei I*BUS_5.sldprt in dem Pfad zu öffnen? das gibt ja wohl in beiden Zeilen den Fehler, oder? sonst setz dir doch einen Stoppunkt oder mit Einzelschritten und arbeite mal mit Variablenüberwachung. Dann siehst du genau wann der Fehler auftritt und vielleicht auch warum ... EditH: Wenn du bei shellexecute bleiben möchtest, brauchst du IMHO tatsächlich die Dateien. ansonsten kannst du ein SWX-Objekt generieren und mit opendoc6 auch beim Öffnen die Konfiguration festlegen. Gruß, Christian
[Diese Nachricht wurde von Christian_W am 29. Apr. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny k Mitglied
Beiträge: 6 Registriert: 04.04.2014
|
erstellt am: 29. Apr. 2014 11:58 <-- editieren / zitieren --> Unities abgeben:
Ok nun bin ich von shellexecute weg.. Das Part öffnen klappt prima aber wie ich die Konfigs beim Öffnen festlegen kann keine Ahnung Hier mein bisheriger Code: Option Explicit Dim swApp As Object Dim fileerror As Long Dim filewarning As Long
Sub main() 'Definition of constant Const swDocPART = 1 Const swOpenDocOptions_Silent = 1 Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True swApp.OpenDoc6 "W:\Datenbank SW\Imbus.SLDPRT", swDocPART, swOpenDocOptions_Silent, "", fileerror, filewarning End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 29. Apr. 2014 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny k
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|