Błąd kompilacji podczas edytowania makra VBA w 64-bitowej wersji programu pakietu Office 2010

Symptomy

Rozpatrzmy następujący scenariusz:

  • Piszesz kod makra microsoft Visual Basic for Applications (VBA), który używa instrukcji Declare.

  • Kod makra VBA używa stałych kompilacji. Na przykład kod makra używa jednej z następujących stałych kompilacji:

    • #If VBA7
    • #If Win64
  • W bloku warunkowym jest używany blok #Else. W bloku #Else używasz składni instrukcji Declare przeznaczonej do uruchamiania w usłudze Microsoft Visual Basic for Applications 6.0.

  • Kod można edytować w 64-bitowej wersji programu pakietu Microsoft Office 2010.

  • Próbujesz zmienić instrukcję Declare w bloku #Else.

W tym scenariuszu zostanie wyświetlony następujący komunikat o błędzie:

Microsoft Visual Basic for Applications

Compile error:

The code in this project must be updated for use on 64-bit
systems. Please review and update Declare statements and then
mark them with the PtrSafe attribute.

Uwaga

Ten problem występuje tylko podczas edytowania makra VBA. Ten problem nie występuje podczas uruchamiania makra.

Rozwiązanie

Aby rozwiązać ten problem, zignoruj komunikat "Błąd kompilacji" i uruchom kod VBA w 64-bitowej wersji programu pakietu Office 2010.

Więcej informacji

Kroki prowadzące do odtworzenia problemu

Firma Microsoft podaje przykłady programowania wyłącznie dla ilustracji, bez gwarancji wyrażonej lub dorozumianej, w tym między innymi dorozumianych gwarancji przydatności handlowej i/lub przydatności do określonego celu. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do procedur tworzenia i debugowania. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.

Aby uzyskać więcej informacji o dostępnych opcjach pomocy technicznej i o tym, jak skontaktować się z firmą Microsoft, odwiedź następującą witrynę sieci Web firmy Microsoft:

https://support.microsoft.com/contactus

  1. Uruchom 64-bitową wersję Microsoft Excel 2010 uruchomioną w 64-bitowym systemie operacyjnym Windows.

    Uwaga

    Domyślnie otwierany jest nowy skoroszyt.

  2. Naciśnij klawisze ALT+F11, aby uruchomić okno środowiska IDE Visual Basic for Applications 7.0.

  3. W menu Insert (Wstaw) kliknij polecenie Module (Moduł).

  4. W wyświetlonym oknie kodu skopiuj i wklej następujący kod:

    #If VBA7 Then
        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
    #Else
        Private Declare Sub Sleep Lib "kernel32" (ByVal ms as Long)
    #End If
    
  5. W każdej instrukcji Declare ręcznie zmień nazwę dowolnego parametru przekazanego z "ms" na "millisecs".

Po zmianie drugiej instrukcji Declare Visual Basic for Applications 7.0 zgłosi błąd wskazujący, że musisz użyć narzędzia PtrSafe. Jednak raport jest niepoprawny, ponieważ wiersz znajduje się w sekcji, która działa tylko w Visual Basic for Applications 6.0. Program VBA 6.0 nie używa narzędzia PtrSafe. W związku z tym można bezpiecznie zignorować komunikat o błędzie.