Hallo Aus solidworks starte ich ein Makro mit einer USF, das beim Öffnen Werte aus einer Excel-Arbeitsmappe anzeigen soll
Dieser Code funktioniert in Excel ruft Zelle H2 aus dem Reiter ' Liste ' ab
sub Excel_test()
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
Cells(1, 10) = ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
seit Solidworks habe ich diesen Fehler Laufzeitfehler ‹ 1004 ›: Die ' Range ' Methode des Objekts ' _Global ' fehlgeschlagen
Private Sub UserForm_Initialize()
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
Wenn jemand eine Idee hat
Maclane
4. September 2024 um 09:03
2
Bonjour; Ne manquerait-il pas les déclaration/references pour Excel ?
`Dim xlApp As Excel.Application
Set xlApp = New Excel.Application`
Voir (pour plus d'informations):
Angesichts der Allgegenwart von Microsoft Excel in Konstruktionsabteilungen weltweit ist es keine Überraschung, dass unser Tutorial "Verwenden von Microsoft Excel mit der SolidWorks API", das Premium-Mitgliedern zur Verfügung steht, eines unserer beliebtesten ist. Obwohl ich nicht darüber berichten werde...
Geschätzte Lesezeit: 7 Minuten
3 „Gefällt mir“
Ich habe hinzugefügt
Dim xlApp als Excel.Application Legen Sie xlApp = Neue Excel.Anwendung fest.
Es funktioniert auch nicht
Cyril.f
4. September 2024 um 12:08
4
Hallo
Wenn ich mich nicht irre, ist es in VBA nicht möglich, auf den Inhalt einer Excel-Datei zuzugreifen, ohne sie zu öffnen. Wenn es sich um eine Art " Datenbank " handelt, um beispielsweise eine Dropdown-Liste zu füttern, ist es am einfachsten, sie in eine Textdatei zu schreiben und zu lesen.
1 „Gefällt mir“
Ich habe gerade getestet, dass es in Excel möglich ist, ich kann die Übereinstimmung mit Solidworks nicht finden
sub Excel_test()
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
Cells(1, 10) = ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
Maclane
4. September 2024 um 12:49
6
et en remplaçant
Cells(1, 10) = ExecuteExcel4Macro(.....
Par
Set xlapp = CreateObject("Excel.application")
Label13 = xlapp.ExecuteExcel4Macro(.....
des pistes relativement identiques ici:
Excel, VBA, Excel-4.0
1 „Gefällt mir“
Cyril.f
4. September 2024 um 13:16
7
Ich habe gerade getestet, also funktioniert es in Excel, aber nicht in SW (Fehler in der Bereichszeile). Auf den ersten Blick denke ich, dass es ein Kompatibilitätsproblem zwischen SW ist, das in 64 Bit ist, und Office in 32 Bit.
Maclane
4. September 2024 um 13:37
8
Essayez avec GetObject("Excel.Anwendung") à la place de CreateObject("Excel.Application") … Il faut aussi penser à « tuer » tous les processus Excel Residuels: Shell "TASKKILL /F /IM Excel.exe", vbHide A voir aussi:
Behebung des Fehlers im Makro, das eine Verbindung zur Datenbank (e.g. SQL, MySql, Oracle, MS Access usw.) oder einer anderen Datenquelle herstellt und keine Werte liest/schreibt oder einen Fehler anzeigt
Mais aussi:
https://forum.mycad.visiativ.com/t/lire-un-excel-ferme-depuis-solidworks-en-vba-sw-2016/101788/7?locale=fr&lang=fr
Cyril.f
4. September 2024 um 14:16
9
Es ist nicht so sehr die ExecuteExcel4Macro-Zeile, die abstürzt, sondern der Aufruf von Range.
Die Fehlermeldung lautet wie folgt, wie zitiert Die 'Range'-Methode des Objekts '_Global' ist fehlgeschlagen
Cyril.f
5. September 2024 um 07:43
11
Hallo
Die Range-Methode wird von der in die SW integrierten Version von vba nicht unterstützt, daher gibt es noch zwei Lösungen (die zweite wurde zu diesem Zeitpunkt noch nicht getestet):
Erstellen Sie eine Schleife mit einer Funktion zum Abrufen jeder gewünschten Spalte/Zeile, siehe ExecuteExcel4Macro - Microsoft Community
Probieren Sie ADODB-ähnliche Funktionen aus. Verbindung, siehe Lesen und Schreiben in geschlossenen Excel-Arbeitsmappen (developpez.com)
Also habe ich nur den ersten getestet, der einwandfrei funktioniert.
2 „Gefällt mir“
Können Sie das entsprechende Makro einfügen, ich kann es nicht mit Lösung 1 tun
Cyril.f
5. September 2024 um 09:29
13
Können Sie mir einfach sagen, in welchem Bereich Sie die Werte abrufen möchten? (z.B. Typ A1:C2)
Hier ist mein ursprünglicher Code, der nicht funktioniert, H2
Private Sub UserForm_Initialize()
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
Cyril.f
5. September 2024 um 09:45
15
Um es vollständig zu verstehen, möchten Sie nur die H2-Zelle?
Cyril.f
5. September 2024 um 10:38
17
In diesem Fall viel einfacher:
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & "R2C8") 'URL entrée
1 „Gefällt mir“
Großartig, es funktioniert
Hier ist ein weiteres Beispiel für diejenigen, die daran interessiert sind
Label2 = ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C8") & "\" & _
ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C7") & _
"-STEP\" 'URL sortie
2 „Gefällt mir“
Maclane
5. September 2024 um 12:53
19
Es ist immer noch seltsam, dass die Funktion "ExecuteExcel4Macro" Tabellenkoordinaten wie " Zeile "+" Spalte " akzeptiert, aber nicht die "Range... Die Freuden des Rechnens und seine Geheimnisse...
1 „Gefällt mir“
Cyril.f
5. September 2024 um 13:00
20
Wie gesagt, ich denke, dass die SW-API auf 64-Bit-Funktionen basiert, während es in Excel 32 sind. Wenn Excel in 64 wäre, gäbe es meiner Meinung nach kein Problem. Ich habe den Fall einiger Makros, die nur aus SW gestartet werden können und fehlerhaft sind, wenn ich sie aus Excel starte
2 „Gefällt mir“