logo elektroda
logo elektroda
X
logo elektroda
ADVERTISEMENT
ADVERTISEMENT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel Office 2024 nie uruchamia makra w pliku xlsm – błąd po migracji z Office 2010

marian4912 02 Jan 2026 09:55 489 9
ADVERTISEMENT
  • #1 21796170
    marian4912
    Level 2  
    Posts: 9
    Dzień dobry
    Makro wywala mi błąd przy pliku zapisanym z rozszerzeniem .xlsm. Nie było problemu przy Office 10. Teraz mam 24.
    Proszę mi poprawić. Dziękuję, Marian
    Attachments:
    • rachunek.xls (101.5 KB) You must be logged in to download this attachment.
  • ADVERTISEMENT
  • #2 21796682
    PRL
    Level 41  
    Posts: 6890
    Help: 953
    Rate: 892
    Oczywiście odpowiednie zabezpieczenia powyłączłaeś?
    Attachments:
    • rachunek.zip (46.36 KB) You must be logged in to download this attachment.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #3 21797133
    marian4912
    Level 2  
    Posts: 9
    Nadal przy otwieraniu wyskakuje błąd: Compile error.
  • ADVERTISEMENT
  • #4 21797140
    PRL
    Level 41  
    Posts: 6890
    Help: 953
    Rate: 892
    W takim razie problemem jest wersja Excela. Ty masz 64 bitową.
    Nie mam wersji 64, więc nie przetestuję, ale wrzuć zawartość 'modHook' do AI i Ci poprawi pod 64.

    Mi wygenerowała tak:

    Code: VBScript
    Log in, to see the code
    Helpful post? Buy me a coffee.
  • #5 21797242
    marian4912
    Level 2  
    Posts: 9
    Nic to nie dało. Jak usunąłem to, co poniżej, to działa, ale bez przewijania myszką.
    W Excelu 2010 miałem przewijanie, tylko mi tego brakuje.

    Quote:
    Private Declare Function FindWindow Lib "user32" _
    Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

    Private Declare Function GetWindowLong Lib "user32.dll" _
    Alias "GetWindowLongA" ( _
    ByVal hwnd As Long, _
    ByVal nIndex As Long) As Long

    Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" ( _
    ByVal idHook As Long, _
    ByVal lpfn As Long, _
    ByVal hmod As Long, _
    ByVal dwThreadId As Long) As Long

    Private Declare Function CallNextHookEx Lib "user32" ( _
    ByVal hHook As Long, _
    ByVal nCode As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long

    Private Declare Function UnhookWindowsHookEx Lib "user32" ( _
    ByVal hHook As Long) As Long

    Private Declare Function PostMessage Lib "user32.dll" _
    Alias "PostMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Private Declare Function WindowFromPoint Lib "user32" ( _
    ByVal xPoint As Long, _
    ByVal yPoint As Long) As Long

    Private Declare Function GetCursorPos Lib "user32.dll" ( _
    ByRef lpPoint As POINTAPI) As Long
  • #6 21797304
    Maciej Gonet
    VBA, Excel specialist
    Posts: 2207
    Help: 824
    Rate: 481
    W systemach 64-bitowych w deklaracjach funkcji API pomiędzy słowami Declare a Function musi być dodane słowo PtrSafe.
    Ponadto wszędzie tam gdzie zmienna oznacza adres, jej typ musi być zmieniony z Long na LongPtr. (Ale nie każdy Long to adres, więc trzeba uważać).
    Przykładowo deklaracja pierwszej funkcji powinna wyglądać tak:
    Code: VBScript
    Log in, to see the code
    Słowo "Private" na początku może być, ale nie jest obowiązkowe.

    W załączeniu przesyłam ściągniętą kiedyś z internetu listę najczęściej używanych deklaracji stałych i funkcji API do wersji 64-bitowej. Trzeba tam sobie odszukać potrzebną funkcję i dopasować deklarację.
    Attachments:
    • Win32API_PtrSafe.txt (676 KB) You must be logged in to download this attachment.
  • ADVERTISEMENT
  • #7 21797392
    marian4912
    Level 2  
    Posts: 9
    Dopasowałem wszystkie deklaracje z pliku tekstowego, nie ma już błędu, ale nie działa myszka przy przewijaniu, tylko klawisz góra-dół klawiatury.
    Attachments:
    • rachunek1.zip (44.51 KB) You must be logged in to download this attachment.
  • #9 21797435
    marian4912
    Level 2  
    Posts: 9
    Jak uruchomię makro przyciskiem 'dopisz', to w okienku nie ma danych.

Topic summary

✨ Problem dotyczy uruchamiania makr w plikach Excel z rozszerzeniem XLSM po migracji z Microsoft Office 2010 do Office 2024. Makra, które działały poprawnie w starszej wersji, generują błędy w nowym środowisku. Przyczyną mogą być zmiany w zabezpieczeniach makr, różnice w obsłudze VBA lub ustawieniach zaufania w Office 2024. Rozwiązania obejmują sprawdzenie i dostosowanie ustawień zabezpieczeń makr, włączenie zaufania do lokalizacji pliku, aktualizację kodu VBA do zgodności z nową wersją Excela oraz ewentualne dostosowanie referencji bibliotek VBA. Konieczne jest również zweryfikowanie, czy plik nie jest otwierany w trybie chronionym, co może blokować wykonanie makr.
Generated by the language model.
ADVERTISEMENT