使用 Aspose.Cells 將 VBMacro 使用者表單設計器儲存複製到工作簿

介紹

歡迎!如果您希望透過 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文件)。

導入包

在您的 C# 專案中,您需要在檔案頂部匯入某些命名空間才能利用 Aspose.Cells 功能。操作方法如下:

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

包含這些命名空間可讓您存取 Aspose.Cells 庫中嵌入的所有強大工具。 現在我們已經涵蓋了先決條件和軟體包,是時候進入有趣的部分了:編碼!讓我們一步一步地分解它。

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

首先,您需要確定文件的位置:

//原始碼目錄
string sourceDir = "Your Document Directory";
//輸出目錄
string outputDir = "Your Document Directory";

在這裡,替換"Your Document 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 巨集(包括 UserForm Designer 模組)複製到新工作簿中:

//將 VBA 巨集設計器使用者窗體從範本複製到目標
foreach (VbaModule vbaItem in templateFile.VbaProject.Modules)
{
    if (vbaItem.Name == "ThisWorkbook")
    {
        //複製 ThisWorkbook 模組程式碼
        target.VbaProject.Modules["ThisWorkbook"].Codes = vbaItem.Codes;
    }
    else
    {
        //複製其他模組程式碼和數據
        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))
        {
            //取得用戶表單即設計器儲存的數據
            byte[] designerStorage = templateFile.VbaProject.Modules.GetDesignerStorage(vbaItem.Name);
            //將設計器儲存新增至目標 Vba 項目
            target.VbaProject.Modules.AddDesignerStorage(vbaItem.Name, designerStorage);
        }
    }
}

這一大段程式碼負責檢查模板檔案中的每個 VBA 模組。我們正在複製使用者窗體設計及其相關程式碼。這就像確保您不僅獲得祖母著名的餡餅食譜,還獲得她精確的烘焙技術!

步驟 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 來運行此程式碼嗎?

雖然它因其用戶友好的功能而受到強烈推薦,但只要支援 .NET 開發,任何 C# IDE 都可以使用。

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

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

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

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