Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Excel-Makro meckert

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
  
CO2 bindende Mauern von NASKA robotics oder: … nur noch schnell die Welt retten
Autor Thema:  Excel-Makro meckert (1778 mal gelesen)
Jonny k
Mitglied


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

Beiträge: 6
Registriert: 04.04.2014

erstellt am: 28. Apr. 2014 15:46    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


Tabelleimbus.jpg

 
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


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

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 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 Jonny k 10 Unities + Antwort hilfreich

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


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

Beiträge: 6
Registriert: 04.04.2014

erstellt am: 28. Apr. 2014 16: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

Öffnen möchte ich in diesem Fall die Konfiguration Imbus_5. Da ich die Konfigurationen nicht einzeln abgespeichert habe, konnte ich für den Pfad nur das Teil Imbus angeben.

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: 29. Apr. 2014 07:51    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 Jonny k 10 Unities + Antwort hilfreich

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


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

Beiträge: 6
Registriert: 04.04.2014

erstellt am: 29. Apr. 2014 08: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 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)


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

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 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 Jonny k 10 Unities + Antwort hilfreich

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


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

Beiträge: 6
Registriert: 04.04.2014

erstellt am: 29. Apr. 2014 11: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

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



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

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 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 Jonny k 10 Unities + Antwort hilfreich

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