• 3
  • 12
  • 401

Mam problem z makrem w Excelu 2010 w wersji 64 bit. Na początku był problem dlatego, że makro było przystosowane do wersji 32 bit. Trzeba było zamienić biblioteki. Co też uczyniłam, jednak problemu to nie rozwiązało. Excel od razu nie odpowiada i włącza się ponownie.

Myślę, że istotną informacją jest też fakt, iż system operacyjny mam w języku polskim, natomiast Excel jest w angielskiej wersji językowej.

Bardzo proszę o pomoc, jeśli ktoś z Państwa mam jakiś pomysły, co może być przyczyną i jak go rozwiązać.

W załączniku przesyłam plik przed jakimikolwiek zmianami w bibliotekach:

1
2
3
4
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long


To:

 
1
2
3
4
5
6
7
8
9
10
11
#If Win64 Then
Private Declare PtrSafe Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare PtrSafe Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare PtrSafe Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare PtrSafe Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
#Else
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
#End If


And safe the macro/project resp. the Excel sheet.

bag
  • Zapytał
  • @ bag | 30.04.2014
    • 6
    • 1
    • 3

Odpowiedzi (3)

  • 8

Wydaje mi się, że może chodzić też nie tylko o wersję Office, ale i o wersję Windows. Czy system operacyjny nie był też zmieniony?

  • Odpowiedział
  • @ | 12.05.2014
  • TRENER MODERATOR ALTKOM AKADEMII
  • 0

Nie, od początku system operacyjny jest w języku polskim, tak jak i wersja pakiety Office od początku jest angielska.

bag
  • Odpowiedział
  • @ bag | 12.05.2014
    • 6
    • 1
    • 3
  • 7

Tak duża ilość deklaracji API Windows może być problemem nawet po jakiejś aktualizacji Windows. Osobiście nie widzę prostego rozwiązania. Starałbym się używać bibliotek Office zamiast API Windows. Biblioteka Office ma obiekt FileDialog, który też może być użyty do operacji na plikach i folderach.

  • Odpowiedział
  • @ | 13.05.2014
  • TRENER MODERATOR ALTKOM AKADEMII