Rozwiązywanie typowych problemów

Poniżej znajdziesz listę typowych problemów, które mogą wystąpić podczas konwertowania kodu VBA na Apps Script za pomocą dodatku Macro Converter.

Drukowanie

Interfejsy VBA API, które drukują pliki, są automatycznie konwertowane na Apps Script, ale mogą zachowywać się inaczej niż oryginalny interfejs VBA API. Oto 2 przykłady:

VBA APIDziałania w Apps Script
PrintOutKonwertuje na skrypt Apps Script, ale API skryptu Apps Script drukuje do pliku, a nie na drukarkę. Możesz ręcznie wydrukować plik PDF.
PrintToFilekonwertuje je na Apps Script. Plik PDF zostanie zapisany w folderze Mój Dysk.

Nieprzekształcone elementy

Konwerter makr nie konwertuje tych funkcji, które trzeba przekształcić ręcznie:

Reguły

Konwerter makra nie obsługuje 2 typów reguł: skrótów klawiszowych i niektórych reguł opartych na zdarzeniach. W wielu przypadkach możesz tworzyć te reguły ręcznie.

Skróty klawiszowe

Aby dodać skróty klawiszowe, wykonaj czynności opisane w sekcji Importowanie funkcji jako makr.

Aktywatory zdarzeń

Niektóre zdarzenia z kodu VBA, takie jak BeforeClose czy BeforeSave, nie mają odpowiedników w Apps Script, ale możesz znaleźć obejście tego problemu.

W przypadku zdarzeń takich jak BeforeClose możesz utworzyć niestandardowe menu lub przycisk, aby wykonać działanie, które musi zostać wykonane przed zamknięciem arkusza kalkulacyjnego.

Arkusze Google automatycznie zapisują każdą zmianę, więc obejścia takich zdarzeń jak BeforeSave nie są możliwe.

Userforms

W VBA UserForm to okno lub okno dialogowe w interfejsie użytkownika aplikacji. Konwerter makr nie konwertuje formularzy UserForms. Możesz je utworzyć ręcznie w Apps Script.

Tworzenie okna dialogowego z formularzem użytkownika

  1. Na komputerze otwórz przekonwertowany plik w Arkuszach Google.
  2. U góry kliknij Rozszerzenia >** Apps Script**.
  3. Po lewej stronie edytora obok opcji „Pliki” kliknij Dodaj plik  > HTML. Zalecamy nadanie plikowi HTML tej samej nazwy co pierwotne UserForm VBA.
  4. Dodaj pola i informacje, które mają się wyświetlać w formularzu. Więcej informacji o formularzach HTML znajdziesz na stronie W3school.com.
  5. Po lewej stronie kliknij plik Apps Script (plik GS) zawierający przekonwertowany kod.
  6. Jeśli w kodzie masz już element onOpen(), zaktualizuj go za pomocą kodu poniżej. Jeśli w kodzie nie masz wyzwalacza onOpen(), dodaj kod poniżej.
    function onOpen() {
     SpreadsheetApp.getUi()
         .createMenu('User Form')
         .addItem('Show Form', 'showForm')
         .addToUi();
    }
    function showForm() {
     var html = HtmlService.createHtmlOutputFromFile('userform_module_name')
         .setWidth(100)
         .setTitle('Sign-up for Email Updates');
     SpreadsheetApp.getUi().showSidebar(html);
    }
        
  7. Zastąp userform_module_name nazwą dodanego pliku HTML.
  8. U góry kliknij Zapisz projekt .
  9. Przejdź do Arkuszy Google i załaduj ponownie stronę.
  10. U góry Arkuszy Google kliknij Formularz użytkownika > Pokaż formularz.

Zakresy nazwane

W Excelu nazwy zakresów są nadawane pojedynczym komórkom lub zakresom komórek.

Podczas konwertowania pliku Excela na Arkusze Google niektóre typy zakresów nazwanych nie zostaną przekonwertowane, ponieważ nie są obsługiwane. Oto 2 przykłady:

Nieobsługiwane zakresy nazwaneOpis
TabeleNie jest obsługiwana w Arkuszach Google, ale istnieje obejście tego problemu.

Aby odtworzyć ten zakres nazwany w Arkuszach, dodaj zakres nazwany, który odwołuje się do zakresu tabeli w notacji A1. Użyj w kodzie VBA tej samej nazwy, co w przypadku pierwotnego zakresu nazwanego, aby kod przekonwertowany mógł go rozpoznać.
Lista zakresówNieobsługiwane w Arkuszach Google. Nie ma rozwiązania.