在 Excel 工作簿之間傳輸 VBA 使用者窗體和宏

介紹

歡迎閱讀使用 VBA 巨集和使用者表單增強 Excel 體驗的終極指南!在本教學中,我們將探討如何使用強大的 Aspose.Cells for .NET 函式庫將 VBA 巨集使用者窗體設計器從一個工作簿轉移到另一個工作簿。無論您是經驗豐富的開發人員還是新手,本逐步指南都將為您提供以程式設計方式處理 Excel 檔案的知識。準備好潛入了嗎?讓我們開始吧!

先決條件

在我們開始編碼之前,讓我們確保您擁有所需的一切:

  1. C#開發環境:C#開發的工作環境,強烈建議使用Visual Studio。
  2. Aspose.Cells for .NET Library:確保將 Aspose.Cells 庫整合到您的專案中。您可以輕鬆地在這裡下載.
  3. VBA 和 Excel 巨集的基本知識:熟悉 VBA 以及 Excel 巨集的功能將增強您對本教學的理解。
  4. 具有使用者表單的 Excel 檔案:建立或取得包含使用者表單的 Excel 工作簿(最好啟用巨集,例如.xlsm文件)。

導入所需的套件

若要利用 Aspose.Cells 提供的功能,請在 C# 檔案頂部包含以下命名空間:

using System;
using Aspose.Cells;
using Aspose.Cells.Vba;

這些命名空間將使您能夠存取 Aspose.Cells 庫中嵌入的強大工具。

第 1 步:定義來源目錄和輸出目錄

首先,確定文件的位置:

//定義來源目錄和輸出目錄
string sourceDir = @"Your\Source\Directory\";
string outputDir = @"Your\Output\Directory\";

將佔位符路徑替換為儲存檔案的實際目錄。

步驟 2:建立一個空的目標工作簿

接下來,建立一個新工作簿,您將在其中複製使用者表單和巨集:

//建立一個空的目標工作簿
Workbook target = new Workbook();

這將初始化一個空白工作簿,作為即將進行的資料傳輸的畫布。

第 3 步:載入範本工作簿

載入包含使用者表單和巨集的工作簿:

//載入包含 VBA 巨集設計器使用者表單的 Excel 文件
Workbook templateFile = new Workbook(sourceDir + "sampleDesignerForm.xlsm");

調整"sampleDesignerForm.xlsm"為您實際文件的名稱。

步驟 4:將工作表複製到目標工作簿

現在,讓我們將工作表從範本複製到目標工作簿:

//將所有範本工作表複製到目標工作簿
foreach (Worksheet ws in templateFile.Worksheets)
{
    if (ws.Type == SheetType.Worksheet)
    {
        Worksheet s = target.Worksheets.Add(ws.Name);
        s.Copy(ws);
        //在目標工作表的儲存格 A2 中新增訊息
        s.Cells["A2"].PutValue("VBA Macro and User Form copied from template to target.");
    }
}

此程式碼循環遍歷範本中的每個工作表並將其複製到目標工作簿,確保所有資料無縫傳輸。

步驟 5:從範本複製 VBA 巨集

接下來,我們將 VBA 巨集(包括使用者窗體設計器模組)複製到新工作簿中:

//將 VBA 巨集設計器使用者窗體從範本複製到目標
foreach (VbaModule vbaItem in templateFile.VbaProject.Modules)
{
    if (vbaItem.Name == "ThisWorkbook")
    {
        //複製 ThisWorkbook 模組程式碼
        target.VbaProject.Modules["ThisWorkbook"].Codes = vbaItem.Codes;
    }
    else
    {
        //複製其他模組程式碼和數據
        int vbaMod = target.VbaProject.Modules.Add(vbaItem.Type, vbaItem.Name);
        target.VbaProject.Modules[vbaMod].Codes = vbaItem.Codes;

        if (vbaItem.Type == VbaModuleType.Designer)
        {
            //取得用戶表單設計器存儲
            byte[] designerStorage = templateFile.VbaProject.Modules.GetDesignerStorage(vbaItem.Name);
            //將設計器儲存新增至目標 Vba 項目
            target.VbaProject.Modules.AddDesignerStorage(vbaItem.Name, designerStorage);
        }
    }
}

此程式碼確保不僅複製程式碼,還複製使用者表單設計,從而保留巨集的功能。

步驟 6:儲存目標工作簿

完成複製過程後,儲存新工作簿:

//儲存目標工作簿
target.Save(outputDir + "outputDesignerForm.xlsm", SaveFormat.Xlsm);

根據需要修改輸出檔名。此步驟建立充滿巨集和使用者表單的自訂工作簿。

第7步:確認成功

最後,在控制台列印一條成功訊息:

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

這句簡單的話讓您放心,您的過程進展順利—這是對您辛勤工作的重要確認!

結論

恭喜!您已成功學習如何使用 Aspose.Cells for .NET 將 VBA 巨集使用者表單設計器從一個工作簿複製到另一個工作簿。雖然一開始看起來可能令人畏懼,但練習將使您精通工作簿的操作。請記住,編碼就是實驗,因此請毫不猶豫地探索 Excel 文件中的不同功能。如果您有任何問題或需要協助,Aspose 論壇和文件是極佳的支援資源。

常見問題解答

Aspose.Cells 支援哪些版本的 Excel?

Aspose.Cells 支援各種 Excel 格式,包括 XLSX、XLSM、CSV 等。

我可以免費使用 Aspose.Cells 嗎?

是的!您可以從免費試用開始來評估該庫:免費試用.

我需要 Visual Studio 來運行此程式碼嗎?

雖然建議使用 Visual Studio 因其使用者友好的功能,但任何支援 .NET 開發的 C# IDE 就足夠了。

在哪裡可以找到更多範例和文件?

您可以探索Aspose.Cells 文檔了解更多範例和深入解釋。

如何解決使用 Aspose.Cells 時出現的問題?

您應該訪問Aspose 支援論壇尋求社區和 Aspose 支援人員的協助。