Witam
Napisałem makro (pobierając bity tu i tam) w celu wykonania eksportu wsadowego. Jednak makro wywołuje shell32.dll (w celu wyboru folderu). Na moim komputerze nie ma problemu z włączoną "Shell and Automation", ale dla mojego kolegi pokazuje błąd w tym wierszu: "Set SH = New Shell32.Shell".
Błąd: Klasa nie obsługuje automatyzacji ani oczekiwanego interfejsu.
Ja jestem na W7, on na W10, oba w 64bit. Czy ktoś spotkał się z tym samym problemem?
Z góry dzięki,
Czy możesz pokazać swój kod.
Witam
Spójrz w tę stronę: TUTAJ
Pozdrowienia
1 polubienie
Fragment kodu, który ulega awarii:
Funkcja BrowseFolder(opcjonalny podpis jako ciąg, _
Opcjonalny InitialFolder As String) Jako Ciąg
Dim SH As Shell32.Shell
Dim F As Shell32.Folder
Ustaw SH = New Shell32.Shell
Ustaw F = SH. BrowseForFolder(0&; Podpis, BIF_RETURNONLYFSDIRS, Folder_początkowy)
Jeśli nie, F jest niczym, to
BrowseFolder = F.Items.Item.Path
Zakończ jeżeli:
Zakończ funkcję
Jeśli dobrze zrozumiałem, muszę tylko dodać 2 linijki:
Dim obj as obiekt
Ustaw Obj = CreateObject("Shell.Application")
Aby to zrobić?
Funkcja BrowseFolder(opcjonalny podpis jako ciąg, _
Opcjonalny InitialFolder As String) Jako Ciąg
Dim SH As Shell32.Shell
Dim F As Shell32.Folder
Dim ShellApp jako obiekt
Ustaw ShellApp = CreateObject("Shell.Application")
Ustaw SH = New Shell32.Shell
Ustaw F = SH. BrowseForFolder(0&; Podpis, BIF_RETURNONLYFSDIRS, Folder_początkowy)
Jeśli nie, F jest niczym, to
BrowseFolder = F.Items.Item.Path
Zakończ jeżeli:
Zakończ funkcję
Otóż nie, to tak, jakbyś nic nie zrobił. Deklarujesz obiekt ShellApp jako nowy obiekt Shell.Application, ale nadal używasz swojego SH obiektu.
Dim Folder As Object
Dim F As Folder
Dim ShellApp As Object
Set ShellApp = CreateObject("Shell.Application")
Set F = ShellApp.BrowseForFolder(0&, Caption, BIF_RETURNONLYFSDIRS, InitialFolder)
If Not F Is Nothing Then
BrowseFolder = F.Items.Item.Path
End If
Pozdrowienia
1 polubienie
Ach, po modyfikacji makro powoduje teraz awarię solidworks. Jakiś pomysł?
W czasie dla mnie, problem rozwiązany, dziękuję