Rozwiązywanie typowych problemów

Ten przewodnik zawiera listę typowych problemów, które mogą wystąpić podczas konwertowania kodu Visual Basic for Applications (VBA) na Apps Script za pomocą Macro Converter.

Interfejsy API VBA, które drukują pliki, są automatycznie konwertowane na Apps Script, ale mogą działać inaczej niż oryginalne interfejsy API VBA. W tabeli poniżej znajdziesz 2 przykłady:

VBA APIDziałanie w Apps Script
PrintOutKonwertuje na Apps Script, ale interfejs Apps Script API drukuje do pliku zamiast na drukarkę. Ręcznie wydrukuj plik PDF.
PrintToFileKonwertuje na Apps Script. Plik PDF zostanie zapisany w folderze Mój dysk.

Produkty, które nie zostały przekonwertowane

Te funkcje nie są konwertowane przez konwerter makr i muszą zostać przekonwertowane ręcznie:

Aktywatory

Konwerter makr nie konwertuje 2 rodzajów reguł: skrótów klawiszowych i niektórych reguł opartych na zdarzeniach. W wielu przypadkach możesz utworzyć te wyzwalacze ręcznie.

Skróty klawiszowe

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

Aktywatory oparte na zdarzeniach

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

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

Obejścia zdarzenia BeforeSave nie są możliwe, ponieważ Arkusze Google automatycznie zapisują zmiany w miarę ich wprowadzania.

Userforms

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

Tworzenie okna formularza użytkownika

  1. Otwórz przekonwertowany plik w Arkuszach na komputerze.
  2. U góry kliknij Rozszerzenia > Apps Script.
  3. Po lewej stronie edytora obok opcji „Pliki” kliknij Dodaj plik  > HTML. Zalecamy nadanie plikowi HTML takiej samej nazwy jak oryginalny formularz VBA.
  4. Dodaj pola i informacje, które mają się pojawiać 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ż wywołanie onOpen, zaktualizuj je za pomocą tego kodu: Jeśli w kodzie nie masz wyzwalacza onOpen, dodaj ten kod:
    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 arkusza Google i załaduj ponownie stronę.
  10. U góry arkusza Google kliknij Formularz użytkownika > Pokaż formularz.

Zakresy nazwane

W Excelu nazwane zakresy to nazwy nadane pojedynczej komórce lub zakresowi komórek.

Podczas konwertowania plików Excela na Arkusze niektóre typy zakresów nazwanych nie są konwertowane, ponieważ są nieobsługiwane. W tabeli poniżej znajdziesz typowe przykłady:

Nieobsługiwane nazwane zakresyOpis
TabeleNieobsługiwane w Arkuszach, ale istnieje obejście.

Aby odtworzyć ten zakres nazwany w Arkuszach, dodaj zakres nazwany, który wskazuje notację A1 zakresu tabeli. Użyj w kodzie VBA tej samej nazwy co w oryginalnym nazwanym zakresie, aby przekonwertowany kod mógł go rozpoznać.
Lista zakresówNieobsługiwane w Arkuszach. Nie ma sposobu obejścia tego problemu.