Ekstrakcja z Excela

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):

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:

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:

mais aussi:

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):

  1. Utwórz pętlę z funkcją, aby pobrać każdą żądaną kolumnę/wiersz, zobacz ExecuteExcel4Macro - Microsoft Community

  2. 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?

Tak

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... :crazy_face:

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