Kopiuj magazyn VBAMacro User Form Designer do skoroszytu za pomocą Aspose.Cells

Wstęp

Witamy! Jeśli chcesz udoskonalić swoje doświadczenie z Excelem za pomocą makr VBA i formularzy użytkownika, jesteś we właściwym miejscu! W tym przewodniku zagłębimy się w to, jak możesz bezproblemowo kopiować projektanta formularzy użytkownika makr VBA z jednego skoroszytu do drugiego za pomocą Aspose.Cells dla .NET. Niezależnie od tego, czy jesteś doświadczonym programistą, czy dopiero zaczynasz, przeprowadzimy Cię przez każdy kluczowy krok. Rozważ to jako podręcznik do opanowania sztuki programistycznego obsługiwania plików Excela. Gotowy do zanurzenia się? Zaczynajmy!

Wymagania wstępne

Zanim przejdziemy do szczegółów kodowania, upewnijmy się, że masz wszystko, czego potrzebujesz:

  1. Środowisko programistyczne C#: Powinieneś mieć gotowe środowisko robocze do programowania w C#. Zdecydowanie zaleca się Visual Studio.
  2. Biblioteka Aspose.Cells dla .NET: Upewnij się, że biblioteka Aspose.Cells jest zintegrowana z projektem. Możesz ją łatwopobierz tutaj.
  3. Podstawowa znajomość języka VBA i makr programu Excel: Dobra znajomość języka VBA i zasad działania makr programu Excel pomoże Ci z łatwością poruszać się po tym samouczku.
  4. Plik programu Excel z formularzem użytkownika: Aby poeksperymentować, utwórz lub uzyskaj skoroszyt programu Excel zawierający formularz użytkownika, najlepiej z włączonymi makrami (takimi jak.xlsm akta).

Importuj pakiety

W swoim projekcie C# musisz zaimportować pewne przestrzenie nazw na górze pliku, aby wykorzystać funkcjonalności Aspose.Cells. Oto, jak to zrobić:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aspose.Cells.Vba;

Uwzględnienie tych przestrzeni nazw umożliwia dostęp do wszystkich potężnych narzędzi osadzonych w bibliotece Aspose.Cells. Teraz, gdy mamy już nasze wymagania wstępne i pakiety, czas przejść do zabawnej części: kodowania! Rozłóżmy to na czynniki pierwsze krok po kroku.

Krok 1: Zdefiniuj katalogi źródłowe i wyjściowe

Najpierw musisz ustalić, gdzie znajdują się Twoje pliki:

// Katalog źródłowy
string sourceDir = "Your Document Directory";
// Katalog wyjściowy
string outputDir = "Your Document Directory";

Tutaj zamień"Your Document Directory" z rzeczywistą ścieżką, w której przechowywane są Twoje pliki. To jest miejsce, z którego zostanie pobrany nasz skoroszyt źródłowy (z formularzem użytkownika) i gdzie zostanie zapisany nowy skoroszyt.

Krok 2: Utwórz pusty skoroszyt docelowy

Następnie utwórzmy skoroszyt docelowy, do którego skopiujemy nasz formularz użytkownika i makra:

// Utwórz pusty skoroszyt docelowy
Workbook target = new Workbook();

Ta linia kodu inicjuje nowy, pusty skoroszyt, który wypełniamy danymi. Pomyśl o tym jak o pustym płótnie dla swojego arcydzieła!

Krok 3: Załaduj swój szablon skoroszytu

Musimy załadować skoroszyt zawierający formularz użytkownika i makra:

// Załaduj plik Excel zawierający formularz użytkownika VBA-Macro Designer
Workbook templateFile = new Workbook(sourceDir + "sampleDesignerForm.xlsm");

Pamiętaj o zmianie"sampleDesignerForm.xlsm" do nazwy twojego rzeczywistego pliku. Ten skoroszyt jest jak twoja książka kucharska — to z niej będziemy czerpać składniki!

Krok 4: Kopiuj arkusze do skoroszytu docelowego

Teraz zacznijmy kopiować arkusze kalkulacyjne z naszego szablonu do skoroszytu docelowego:

// Skopiuj wszystkie arkusze szablonów do skoroszytu docelowego
foreach (Worksheet ws in templateFile.Worksheets)
{
    if (ws.Type == SheetType.Worksheet)
    {
        Worksheet s = target.Worksheets.Add(ws.Name);
        s.Copy(ws);
        // Wpisz wiadomość w komórce A2 arkusza docelowego
        s.Cells["A2"].PutValue("VBA Macro and User Form copied from template to target.");
    }
}

W tym kroku przechodzimy przez każdy arkusz roboczy w szablonie i kopiujemy je do naszego docelowego skoroszytu. Jeśli się nad tym zastanowić, to tak, jakby przenosić najlepsze przepisy z jednej książki kucharskiej do drugiej!

Krok 5: Kopiuj makra VBA z szablonu

Następnie skopiujemy makra VBA, w tym moduły UserForm Designer, do naszego nowego skoroszytu:

// Kopiuj formularz użytkownika VBA-Macro Designer z szablonu do celu
foreach (VbaModule vbaItem in templateFile.VbaProject.Modules)
{
    if (vbaItem.Name == "ThisWorkbook")
    {
        // Skopiuj kod modułu ThisWorkbook
        target.VbaProject.Modules["ThisWorkbook"].Codes = vbaItem.Codes;
    }
    else
    {
        // Kopiuj kod i dane innych modułów
        System.Diagnostics.Debug.Print(vbaItem.Name);
        int vbaMod = 0;
        Worksheet sheet = target.Worksheets.GetSheetByCodeName(vbaItem.Name);
        if (sheet == null)
        {
            vbaMod = target.VbaProject.Modules.Add(vbaItem.Type, vbaItem.Name);
        }
        else
        {
            vbaMod = target.VbaProject.Modules.Add(sheet);
        }
        target.VbaProject.Modules[vbaMod].Codes = vbaItem.Codes;
        if ((vbaItem.Type == VbaModuleType.Designer))
        {
            // Pobierz dane użytkownika z formularza, np. projektanta magazynu
            byte[] designerStorage = templateFile.VbaProject.Modules.GetDesignerStorage(vbaItem.Name);
            // Dodaj magazyn projektanta do docelowego projektu Vba
            target.VbaProject.Modules.AddDesignerStorage(vbaItem.Name, designerStorage);
        }
    }
}

Ten spory kawałek kodu obsługuje sprawdzanie każdego modułu VBA w pliku szablonu. Kopiujemy projekt UserForm i powiązane z nim kody. To tak, jakbyś upewnił się, że nie tylko otrzymasz słynny przepis babci na ciasto, ale także jej dokładne techniki pieczenia!

Krok 6: Zapisz skoroszyt docelowy

Po utworzeniu wszystkich kopii nadszedł czas na zapisanie naszej ciężkiej pracy:

// Zapisz skoroszyt docelowy
target.Save(outputDir + "outputDesignerForm.xlsm", SaveFormat.Xlsm);

Upewnij się, że zmienisz nazwę pliku wyjściowego, jeśli to konieczne. Po zapisaniu go, skutecznie tworzysz własną, dostosowaną wersję skoroszytu pełną makr i formularzy użytkownika. Jak to jest ekscytujące?

Krok 7: Potwierdź powodzenie

Na koniec wydrukujmy na konsoli komunikat o powodzeniu:

Console.WriteLine("CopyVBAMacroUserFormDesignerStorageToWorkbook executed successfully.\r\n");

Ta mała linijka zapewnia, że proces przebiegł gładko. To wisienka na torcie Twojego deseru kodowania!

Wniosek

Gratulacje! Ukończyłeś przewodnik krok po kroku, jak skopiować projektanta formularzy użytkownika makra VBA z jednego skoroszytu do drugiego przy użyciu Aspose.Cells dla .NET. Na początku może się to wydawać nieco przytłaczające, ale z czasem będziesz obsługiwać skoroszyty jak profesjonalista. Pamiętaj, że kodowanie to przede wszystkim praktyka, więc nie bój się próbować różnych rzeczy w plikach Excela. Jeśli masz jakieś pytania lub napotkasz jakieś problemy, możesz sprawdzić fora Aspose lub dokumentację, aby uzyskać pomoc!

Najczęściej zadawane pytania

Jakie wersje programu Excel obsługuje Aspose.Cells?

Aspose.Cells obsługuje szeroką gamę formatów Excela, w tym XLSX, XLSM, CSV i inne.

Czy mogę używać Aspose.Cells za darmo?

Tak! Możesz zacząć od bezpłatnego okresu próbnego, który pozwala ocenić bibliotekę:Bezpłatna wersja próbna.

Czy potrzebuję programu Visual Studio, aby uruchomić ten kod?

Choć jest to środowisko zdecydowanie zalecane ze względu na przyjazne użytkownikowi funkcje, sprawdzi się każde środowisko IDE języka C#, pod warunkiem że obsługuje programowanie w technologii .NET.

Gdzie mogę znaleźć więcej przykładów i dokumentacji?

Możesz zbadaćDokumentacja Aspose.Cells aby zobaczyć więcej przykładów i szczegółowych wyjaśnień.

Jak rozwiązywać problemy podczas korzystania z Aspose.Cells?

Powinieneś odwiedzićForum wsparcia Aspose Aby uzyskać pomoc od społeczności i personelu pomocniczego Aspose.