Witam Z solidworks uruchamiam makro z USF, które powinno wyświetlać wartości ze skoroszytu programu Excel podczas jego otwierania
Ten kod działa w programie Excel Pobiera komórkę H2 z zakładki ' Lista '
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
od Solidworks mam taki błąd Błąd wykonania ‹ 1004 ›: Metoda ' Range ' obiektu ' _Global ' nie powiodła się
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
jeśli ktoś ma pomysł
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):
Biorąc pod uwagę wszechobecność programu Microsoft Excel w działach inżynieryjnych na całym świecie, nie jest niespodzianką, że nasz samouczek "Korzystanie z programu Microsoft Excel z interfejsem API SolidWorks", dostępny dla członków Premium, jest jednym z naszych najpopularniejszych. Chociaż nie zamierzam omawiać...
Szacowany czas czytania: 7 minut
3 polubienia
Dodałem
Dim xlApp As Excel.Application Ustaw xlApp = New Excel.Application'
To też nie działa
Witam
O ile się nie mylę, w VBA nie ma możliwości uzyskania dostępu do zawartości pliku Excel bez jego otwierania. Jeśli jest to na przykład dla jakiejś " bazy danych " do karmienia listy rozwijanej, najłatwiej jest zapisać ją w pliku tekstowym i przeczytać.
1 polubienie
Właśnie przetestowałem, że jest to możliwe w programie Excel, nie mogę znaleźć dopasowania do Solidworks
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
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 polubienie
Właśnie przetestowałem, więc działa w Excelu, ale na SW nie (błąd na linii zakresu). Na pierwszy rzut oka myślę, że jest to problem z kompatybilnością między oprogramowaniem w wersji 64-bitowej a Office w wersji 32-bitowej.
Essayez avec GetObject("Excel.Aplikacja") à la place de CreateObject("Excel.Application") … Il faut aussi penser à « tuer » tous les processus excel residuels: Powłoka "TASKKILL /F /IM Excel.exe", vbHide a voir aussi:
Naprawienie błędu w makrze, które łączy się z bazą danych (e.g. SQL, MySql, Oracle, MS Access itp.) lub dowolnym innym źródłem danych i nie odczytuje/zapisuje wartości lub wyświetla błąd
mais aussi:
Merci Yves.T ,
Il me maquait la référence "Microsoft Excel XX.X Object library".
Comment fait-on pour savoir quelles références sont nécessaires pour quel code ??
Sinon, pour alimenter ma Combobox j'ai utilisé le code suivant :
Prywatny Sub UserForm_Initialize()
Dim i As Byte
Dim e As Ciąg
i = 1
Robić
ComboBox1.AddItem ExecuteExcel4Macro("'C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xlsx]Feuil1'! R" & i & "C1")
i = i + 1
e = ExecuteExcel4Macro("'C:\Dokumenty i ...
Nie chodzi o to, aby linia ExecuteExcel4Macro uległa awarii, ale o wywołanie Range.
Komunikat o błędzie jest następujący, zgodnie z cytatem Metoda "Range" obiektu "_Global" nie powiodła się
Witam
Metoda zakresowa nie jest obsługiwana przez wersję vba zintegrowaną z oprogramowaniem, więc pozostały dwa rozwiązania (drugie nie zostało jeszcze przetestowane na tym etapie):
Utwórz pętlę z funkcją, aby pobrać każdą żądaną kolumnę/wiersz, zobacz ExecuteExcel4Macro - Microsoft Community
Wypróbuj funkcje podobne do ADODB. Połączenie, zobacz Odczyt i zapis w zamkniętych skoroszytach programu Excel (developpez.com)
Przetestowałem więc tylko ten pierwszy, który działa poprawnie.
2 polubienia
czy możesz umieścić odpowiednie makro, nie mogę tego zrobić za pomocą rozwiązania 1
Czy możesz mi po prostu powiedzieć, w którym zakresie chcesz pobrać wartości? (na przykład typ A1:C2)
oto mój oryginalny kod, który nie działa, 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
Aby w pełni zrozumieć, czy chcesz tylko ogniwo H2?
W tym przypadku znacznie prościej:
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & "R2C8") 'URL entrée
1 polubienie
Świetnie, działa
Oto kolejny przykład dla tych, którzy są zainteresowani
Label2 = ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C8") & "\" & _
ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C7") & _
"-STEP\" 'URL sortie
2 polubienia
Nadal dziwne jest, że funkcja "ExecuteExcel4Macro" akceptuje współrzędne tabeli, takie jak " Wiersz "+" Kolumna ", ale nie "Zakres... Radość z informatyki i jej tajemnice...
1 polubienie
Jak już powiedziałem, myślę, że API oprogramowania jest na funkcjach 64-bitowych, podczas gdy w Excelu jest to 32. Gdyby Excel był w 64 to myślę, że nie byłoby problemu. Mam przypadek niektórych makr, które można uruchomić tylko z oprogramowania i są błędne, jeśli uruchamiam je z Excela
2 polubienia