首页 > 编程语言 >有翅膀Excel-可重新分发的主互操作程序集

有翅膀Excel-可重新分发的主互操作程序集

时间:2023-05-15 17:33:09浏览次数:55  
标签:分发 excelApplication Excel System 互操作 targetExcelFile var using

using Microsoft.Vbe.Interop;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace DoVBAMacro
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            AddMacro();
        }

        public void AddMacro()
        {
            try
            {
                // open excel file 
                const string excelFile = @"C:\Users\Desktop\vba\test1.xlsm";
                var excelApplication = new Excel.Application { Visible = true };
                var targetExcelFile = excelApplication.Workbooks.Open(excelFile);

                // add standart module to file
                var newStandardModule = targetExcelFile.VBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
                var codeModule = newStandardModule.CodeModule;

                // add vba code to module
                var lineNum = codeModule.CountOfLines + 1;
                var macroName = "Button1_Click";
                var codeText = "Public Sub " + macroName + "()" + "\r\n";
                codeText += "  MsgBox \"Hi from Excel\"" + "\r\n";
                codeText += "End Sub";

                codeModule.InsertLines(lineNum, codeText);
                targetExcelFile.Save();

                // run the macro
                var macro = string.Format("{0}!{1}.{2}", targetExcelFile.Name, newStandardModule.Name, macroName);
                excelApplication.Run(macro);

                excelApplication.Quit();

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
    }
}

运行后:

 

标签:分发,excelApplication,Excel,System,互操作,targetExcelFile,var,using
From: https://www.cnblogs.com/shiningleo007/p/17402564.html

相关文章

  • web自动化14--读取excel文件
    1、安装xlrd模块,pipinstallxlrd,成功后2、打开exlce表格data=xlrd.open_workbook('test.xlsx')table=data.sheets()[0]          # 通过索引顺序获取sheettable=data.sheet_by_index(0)    # 通过索引顺序获取table=data.sheet_by_name(u'She......
  • QAbstractEventDispatcher 抽象事件分发类
     QAbstractEventDispatcherQAbstractEventDispatcher是一个抽象事件分发类,提供了一个事件循环,并将事件分发给相应的对象。主要职责有:1.管理一个事件循环,接收各种事件并分发2.提供注册,注销事件等接口3.处理定时器,到期后触发timeout信号4.处理异步信号连接,将其包装为事件......
  • python -- excel文件被重命名修改后缀为.csv后,使用pandas来读取时,仍会被识别为一个exc
     新建数据文件如c_data.xlsx(后缀为.xlsx),右键重命名,直接将文件后缀名一并修改,修改为“c_data.csv”读取文件里的数据data=pd.read_csv('E:/python_workspace/data_space/c_data.csv')发现报错信息如下:Traceback(mostrecentcalllast):File"E:/python_workspace/......
  • 如何实现 Excel 表格转置(行列互换)
    直接上经验贴:https://baijiahao.baidu.com/s?id=1690475581736550777&wfr=spider&for=pc大概就是先复制粘贴,在粘贴时点“选择性粘贴”,点选“转置”。......
  • Map函数实例-计算各名次的次数(Excel函数集团)
    问题:B2:G6是各区域连续六周的销量数据,现需要计算每个区各得过几次第一、第二、第三、第四、第五。=SUM(N(MAP(SEQUENCE(,6),LAMBDA(a,INDEX(SORTBY($A$2:$A$6,OFFSET($A$2:$A$6,,a),-1),ROW(A1))))=B$8))使用公式“=SORTBY($A2:$A6,B2:B6,-1)”可以获得第11周各区域销量的排......
  • 打开Excel总是提示“宏”的相关信息
    打开Excel总是提示“宏”的相关信息,想要关闭掉参考......
  • Excel合并单元格拆分后数据补录
    原始数据: 期望数据步骤:1、补录为空的数据2、拆分单元格、选择数据选择数据后执行Ctr+G定位数据定位条件:空值定位到第一个数据后,编写公式【=】然后选择它的上一个单元格然后执行Ctrl+回车,被定位到的数据全部执行等于上一单元格值的公式 ......
  • 使用讯飞模型学习Excel VLOOKUP的一次体验
    提问1:EXCELVLOOKUP回答1:VLOOKUP是Excel中的一种查找函数,用于在一个表格中查找某个值,并返回该值所在行的指定列的值。其语法如下:```VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])```其中:-lookup_value:要查找的值。-table_array:要在其中进行查找的......
  • EasyExcel读取excel内容
     实体类packagecom.atguigu.yygh.cmn.controller;importcom.alibaba.excel.annotation.ExcelProperty;importlombok.Data;importjava.io.Serializable;@DatapublicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID=-68......
  • excel中判断某个单元格包含某个字符的方法
    在Excel中,你可以使用FIND或SEARCH函数来判断一个单元格是否包含某个字符。这两个函数都会返回子字符串在单元格内容中的起始位置,如果没有找到子字符串,则返回错误。FIND和SEARCH函数的基本语法是相似的,但FIND函数区分大小写,而SEARCH函数不区分大小写。以下是FIND和SEARCH函数的基......