• <menu id="w2i4a"></menu>
  • logo Aspose.Cells功能教程——使用C#在Excel文件中添加或修改VBA宏

      文檔首頁(yè)>>Aspose.Cells功能教程——使用C#在Excel文件中添加或修改VBA宏>>Aspose.Cells功能教程——使用C#在Excel文件中添加或修改VBA宏

      Aspose.Cells功能教程——使用C#在Excel文件中添加或修改VBA宏


      VBA(用于應(yīng)用程序的Visual Basic)是MS Excel文件中使用的一種編程語(yǔ)言,用于自動(dòng)執(zhí)行與電子表格相關(guān)的操作。VBA宏用于編寫用戶定義的函數(shù),這些函數(shù)使您可以加快必須手動(dòng)執(zhí)行的任務(wù)。

      在本文中,將學(xué)習(xí)如何以編程方式使用MS Excel文件中的VBA宏。以及將能夠使用C#在Excel工作簿中提取,添加和修改VBA宏。

      • 從Excel工作簿中提取VBA宏
      • 將VBA宏添加到Excel工作簿
      • 在Excel工作簿中修改VBA宏

      Aspose.Cells for .NET是一個(gè)C#類庫(kù),旨在從.NET應(yīng)用程序內(nèi)部自動(dòng)執(zhí)行電子表格操作。該API提供了廣泛的功能,使您能夠創(chuàng)建,修改和轉(zhuǎn)換MS Excel工作簿。此外,API使無縫使用VBA宏成為可能。擊下方按鈕可以下載API的安裝包。

      點(diǎn)擊下載Aspose.Cells for .NET

      慧都17一齊周年慶!整合所有格式的Aspose.Total永久授權(quán)正在火熱促銷中,樂享85折起!聯(lián)系慧都客服立馬1分鐘了解全部咨詢!

      使用C#從Excel文件中提取VBA宏

      首先,從現(xiàn)有的Excel工作簿中提取VBA宏。以下是執(zhí)行此操作的步驟。

      1. 創(chuàng)建Workbook類的對(duì)象以加載Excel文件。
      2. 從Workbook.VbaProject.Modules集合訪問VbaModule對(duì)象中的每個(gè)VBA模塊。
      3. 使用VbaModule.Codes屬性從每個(gè)模塊檢索代碼。

      下面的代碼示例演示如何使用C#從Excel工作簿中提取VBA宏。

      // Create workbook object from source Excel file
      Workbook workbook = new Workbook("sample.xlsm");
      
      // Extract code from each VBA module
      foreach (VbaModule module in workbook.VbaProject.Modules)
      {
          string code = module.Codes;
          Console.Write(code);
      }

      使用C#將VBA宏添加到Excel文件

      .NET的Aspose.Cells也允許您將VBA宏添加到現(xiàn)有或新的Excel文件中??梢园凑找韵虏襟E完成。

      1. 使用Workbook類創(chuàng)建一個(gè)新的Excel文件或加載一個(gè)現(xiàn)有的文件。
      2. 使用Worksheet類添加一個(gè)新工作表或獲取現(xiàn)有工作表。
      3. 使用Workbook.VbaProject.Modules.Add(Worksheet)方法添加一個(gè)新的VBA模塊,并獲取該模塊的ID。
      4. 從Workbook.VbaProject.Modules [idx]集合訪問VBA模塊到VbaModule對(duì)象。
      5. 使用VbaModule.Name屬性添加模塊的名稱。
      6. 使用VbaModule.Codes屬性將代碼添加到模塊中。
      7. 使用Workbook.Save(String,SaveFormat.Xlsm)方法保存工作簿。

      下面的代碼示例演示如何使用C#將VBA宏添加到Excel工作簿。

      // Create new workbook
      Workbook workbook = new Workbook();
      
      // Access first worksheet
      Worksheet worksheet = workbook.Worksheets[0];
      
      // Add VBA Module
      int idx = workbook.VbaProject.Modules.Add(worksheet);
      
      // Access the VBA Module, set its name and codes
      Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx];
      module.Name = "TestModule";
      
      module.Codes = "Sub ShowMessage()" + "\r\n" +
      "    MsgBox \"Welcome to Aspose!\"" + "\r\n" +
      "End Sub";
      
      // Save the workbook
      workbook.Save("output_out.xlsm", SaveFormat.Xlsm);

      使用C#在Excel文件中修改VBA宏

      還可以使用以下步驟修改Excel文件中的現(xiàn)有VBA宏。

      1. 使用Workbook類加載Excel文件。
      2. 從Workbook.VbaProject.Modules集合到VbaModule對(duì)象中訪問VBA模塊。
      3. 使用VbaModule.Codes屬性從所需模塊中檢索代碼。
      4. 替換代碼并使用Workbook.Save(String)方法保存Excel文件。

      下面的代碼示例演示如何使用C#修改Excel文件中的VBA宏。

      // Create workbook object from source Excel file
      Workbook workbook = new Workbook("sample.xlsm");
      
      // Change the VBA Module Code
      foreach (VbaModule module in workbook.VbaProject.Modules)
      {
          string code = module.Codes;
      
          // Replace the original message with the modified message
          if (code.Contains("This is test message."))
          {
              code = code.Replace("This is test message.", "This is Aspose.Cells message.");
              module.Codes = code;
          }
      }
      
      // Save the output Excel file
      workbook.Save("output_out.xlsm");

      還想要更多嗎?您可以點(diǎn)擊閱讀【2020 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問或需求,請(qǐng)隨時(shí)加入Aspose技術(shù)交流群(761297826),我們很高興為您提供查詢和咨詢
      掃碼咨詢


      添加微信 立即咨詢

      電話咨詢

      客服熱線
      023-68661681

      TOP
      三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();