首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用MS Excel VSTO外接程序如何抑制标准Excel的“另存为”功能并显示用于保存的自定义窗口?

使用MS Excel VSTO外接程序可以通过以下步骤抑制标准Excel的“另存为”功能并显示用于保存的自定义窗口:

  1. 创建一个新的VSTO项目,并将其与Excel集成。
  2. 在VSTO项目中,打开ThisAddIn.cs文件,并在Startup事件处理程序中添加以下代码:
代码语言:txt
复制
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookBeforeSave += Application_WorkbookBeforeSave;
}

private void Application_WorkbookBeforeSave(Excel.Workbook workbook, bool saveAsUI, ref bool cancel)
{
    cancel = true; // 取消标准的“另存为”功能

    // 显示自定义保存窗口
    CustomSaveForm saveForm = new CustomSaveForm();
    saveForm.ShowDialog();

    // 在此处添加保存逻辑,根据自定义窗口中的选项执行保存操作
}
  1. 创建一个自定义的保存窗口,可以使用Windows窗体或WPF来实现。在窗口中添加所需的控件和逻辑,例如保存路径选择器、文件名输入框等。
  2. 在CustomSaveForm窗口中,根据用户的选择执行保存操作。可以使用以下代码将工作簿保存到指定路径:
代码语言:txt
复制
private void btnSave_Click(object sender, EventArgs e)
{
    string savePath = txtSavePath.Text; // 从路径选择器或输入框中获取保存路径
    string fileName = txtFileName.Text; // 从文件名输入框中获取文件名

    // 执行保存操作
    Globals.ThisAddIn.Application.ActiveWorkbook.SaveAs(savePath + "\\" + fileName);

    this.Close(); // 关闭自定义保存窗口
}
  1. 在VSTO项目中,将自定义保存窗口与外接程序关联。在ThisAddIn.cs文件中的Startup事件处理程序中添加以下代码:
代码语言:txt
复制
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookBeforeSave += Application_WorkbookBeforeSave;
}

private void Application_WorkbookBeforeSave(Excel.Workbook workbook, bool saveAsUI, ref bool cancel)
{
    cancel = true; // 取消标准的“另存为”功能

    // 显示自定义保存窗口
    CustomSaveForm saveForm = new CustomSaveForm();
    saveForm.ShowDialog();

    // 在此处添加保存逻辑,根据自定义窗口中的选项执行保存操作
}

以上步骤中,我们通过VSTO外接程序的WorkbookBeforeSave事件来拦截Excel的保存操作,并取消标准的“另存为”功能。然后,我们显示自定义的保存窗口,用户可以在窗口中选择保存路径和文件名。最后,根据用户的选择执行保存操作。

请注意,这只是一个示例,你可以根据自己的需求和设计来自定义保存窗口的外观和行为。另外,这里没有提及腾讯云相关产品和产品介绍链接地址,因为腾讯云并没有直接与MS Excel VSTO外接程序相关的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在VB.net中,List(of string())与List(of List(of string))有什么区别

(2)VSTO外接Excel中,List(of List(of string))如何输出到Excel工作表 在VB.NETVSTO外接程序中,如果您有一个`List(Of List(Of String...))`数据结构,希望将它输出到Excel工作表中,您可以按照以下步骤操作: Imports Microsoft.Office.Interop.Excel ' 假设您已经有了一个 List<List<string...workbook.SaveAs("YourFilePath.xlsx") ' 保存到指定位置 excelApp.Visible = True ' 如果需要,可以让Excel窗口可见 ' 清理资源 Marshal.ReleaseComObject...应用程序、工作簿及工作表引用。...此外,实际应用中还需要处理可能错误和异常,确保数据适当地格式化适应Excel工作表。如果列表中列数不一致,可能需要添加额外逻辑来处理这种情况。

38010

一起学Excel专业开发21:Excel工时报表与分析系统开发(3)——自定义用户界面

设置背景图片 最简便方法是将应用程序工作簿中一个工作表作为其“桌面”,向其中添加背景图片,并将工作簿最大化,设置工作表显示属性使其显示范围扩大到整个Excel窗口,去除工作簿窗口控制框和最大最小化按钮...如果应用程序使用基于工作表用户接口,则应该将工作表作为主要数据录入界面和显示报表界面,而对话框应只用于少量任务和向导程序。...如果应用程序使用基于用户窗体接口,则工作表只应用于显示报表。 在决定采用何种样式用户接口时,应该考虑用户可能会在应用程序什么地方花时间,是提供丰富编辑功能更好还是提供强大控制功能更好。...自定义命令栏 对于Excel 2003及以前版本来说,大多数独立式应用程序都包括一套自已菜单或工具栏,用于调用相应功能操作。如本示例所示: ?...'激活该工作簿显示Excel标准'另存为'对话框 gwbkResults.Activate On Error Resume Next

1.9K10
  • 在VB.net中 List(of string())与Arr(,)有什么区别

    6.接口和功能:a.List(Of String())提供了更多方法和功能,如排序、搜索和迭代等。而Array(,)则提供了一些基本操作和函数。...(2)VSTO外接Excel中List(of string())如何输出到Excel工作表 在VB.net中,要将List(Of String())快速输出到Excel工作表中,您可以使用Microsoft...Excel工作簿关闭Excel应用程序对象 workbook.SaveAs("C:\Temp\ExcelOutput.xlsx") workbook.Close()...(3)VSTO外接Excel中arr(,)如何输出到Excel工作表 在VB.net中,二维数组arr(,)可以批量输出到Excel工作表中,但您需要使用适当库来操作Excel。...excelApp.Quit() End Sub 在上述示例中,我们定义了一个二维数组arr(5, 3),使用两个嵌套循环遍历数组中每个元素,并将其写入Excel工作表中。

    29310

    ExcelVBA把当前工作表导出为PDF文档

    我们先问问Kimi Excel导出为PDF方法有多种,以下是一些常见方法:1 使用Excel软件内置功能:打开Excel文件,点击“文件”菜单。选择“另存为”,在“保存类型”中选择“PDF”。...设置保存路径和文件名,点击“保存”。2 通过Excel“输出为PDF”功能:在Excel中,点击“文件”菜单下“输出为PDF”。选择“当前工作表”或“整个工作簿”。指定保存路径,点击“开始输出”。...7 在Office桌面应用中保存或转换为PDF或XPS:使用Microsoft Office程序,可以另存或转换文件为PDF格式。...1 使用Excel软件内置功能: 打开Excel文件,点击“文件”菜单。 选择“另存为”,在“保存类型”中选择“PDF”。 设置保存路径和文件名,点击“保存”。...综上,我们还是利用ExcelVBA方法是最好方法: 也可以后期制作在VSTO插件中 下面是完成代码 功能: 1.代码自动检测是否存在打印区域,若有,导出打印区域,若无,导出整表 2.导出文件保存在原文件根目录中

    16410

    Excel催化剂开源第10波-VSTO开发之用户配置数据与工作薄文件一同存储

    在传统VBA开发中,若是用是普通加载项方法,是可以存储数据在xlam上,若用是Com加载项方法同时是Addins程序级别的项目开发,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用。...但无论以上两种方式都会带来一点缺陷,若用户配置好自己数据,这些配置数据只能保存到自己电脑上,无法在文件共享给其他人使用时,配置文件一传递过去。...当然一个折衷方式是,在Excel文件中新建一个工作表隐藏它来实现配置数据跟着工作薄一起带走。...这种方式有一缺点是,在用户工作薄里进行数据操作,用户很容易破坏到这些数据,就算深度隐藏工作表,仍然会轻松地用VBA方法重新将其显示出来,特别对一些敏感配置信息保存非常不利。...具体场景分享 在Excel催化剂功能中,有好几个经典功能用上了CustomXMLPart存储配置信息,跟随文档传输安全。

    1.3K20

    【改进和增强Microsoft Office应用程序】ExtendOffice软件产品介绍

    您可以在单个选项卡式窗口中打开多个文档/文件例如使用浏览器IE 8/9/10、Firefox和Google ChromeKutools for Excel、Word、Outlook是功能强大插件拥有适用于...使用此收藏夹组功能,可以轻松地将以下操作应用于Microsoft Office应用程序一组文档。...如果要将文件保存在另一个文件夹中,请从上下文菜单中选择“另存为”。04、显示完整文件名如果文件名很长,通常Windows任务栏仅显示其中一小部分,这通常是一个问题。...07、高性能Office选项卡基于标准Microsoft Office加载项技术。 它不会影响标准应用程序性能,并且文件大小非常小。08、移动标签可以通过拖动轻松移动选项卡。...您也可以使用自定义快捷键显示或隐藏选项卡栏(默认快捷键为“ Win + Q”)。03、打开文件上下文菜单包含以下选项:“打开”,“在新窗口中打开”和“打开文件夹”。

    11.2K20

    终于有一款组件可以全面超越Apache POI

    如果想通过简单代码逻辑,快速创建、加载、编辑、导入/导出大型文档(Excel、Word、PDF),并将其部署到云端时,又该如何实现?...Office 和 Acrobat 组件情况下,提供快速生成、加载、编辑和保存 Excel、PDF、Word文档功能。...条件格式 GcExcel支持多种条件格式,如自定义图标集、判断是否高于平均值(AboveAverage)、发生日期判断、Top 10和重复项判断,且这些条件格式设置规则与VSTO保持一致。...、POI和Aspose.Cells性能结果,如下所示: 设置:获取和保存100,000 * 30单元格double / string / date值,下图显示了double值结果。...打开保存一个20.5MB Excel文件,其中包含了许多数据、公式和单元格格式,结果如下: GcExcel 用时不超过4.9S ;Apache POI 则达到10S左右 GcExcel 内存消耗为

    3.3K10

    个人永久性免费-Excel催化剂功能第22波-Excel文件类型、密码批量修改,补齐PowerQuery短板

    文件,再保存才能成为标准xls供PowerQuery来读取。...在Excel催化剂Excel文件格式转换】功能中,很好地破解以上两个难题 具体操作如下 步骤一 选择要处理Excel文件全路径 对同一个文件夹下所有文件路径提取,使用第4波介绍自定义函数,轻松可获取得到...仅获取文件名,不含后缀名 步骤二 构造成生成新文件全路径名称 若文件类型需转换,改变目标文件后缀名即可 若想转换新生成文件另存为其他路径上,只需修改保存路径即可 ?...使用自定义函数构造出新目标文件全路径 步骤三 选择源文件区域后点击【Excel文件格式转换】 简单配置一下窗体界面,让程序知道从哪里找到目标文件和密码信息 如果生成新文件,无需密码,去勾选【目标文件是否保留原文件打开密码...额外场景 将xlsx转换为xls可供低版本Excel使用 一般来说,更加建议使用xlsx文件保存数据,文件数据压缩性更强,文件占用空间更小,也更加支持Excel高版本功能,可能某些场景,需要转换为低版本

    1.2K30

    Excel催化剂开源第21波-使用Advanced Installer打包VSTO几个注意问题

    Excel催化剂一直也同样有提供离线版打包工具打包成EXE文件一键安装方式,不过鉴于Excel催化剂功能还在不断迭代开发中,打包方式,暂时还不会做自动更新功能,所以不建议使用离线版安装 在Excel...观察Advanced Installer打包向导,也感觉是VSTO程序只能安装给当前用户使用,界面上是变灰显示。...程序,将此程序也一打包进安装程序中。...可以使用自定义动作向导设置运行exe,配置好相应exe位置信息,即可完成安装插件过程中,也同时运行其他exe文件。...使用自定义动作向导设置运行exe 将要运行exe添加到程序文件夹中 设置好自定义动作exe信息 打包成32位还是64位程序 因其他程序可能有区分32位和64位区别,但感觉VSTO项目是不用太理会这些

    1.1K30

    个人永久性免费-Excel催化剂功能第48波-拆分工作薄内工作表,堪称Excel单反

    今天Excel催化剂保持人有我优标准,给大家带来堪称Excel单反一般新体验,极丰富灵活可配置功能,玩转拆分工作薄一切场景需要。...能改变一个算一个,当有这些一个工作薄里存有大量相同类型工作表时,当面临要拆分来分享数据时,此时没有这个拆分功能,还是诸多地不便,最后只能低下头来,把这些伪需求也给做出来,有此功能并不代表Excel催化剂认可接爱这些制表行为...第25波-小白适用文本处理功能 第26波-正确Excel密码管理之道 第27波-Excel工作表设置快捷操作 第28波-工作薄瘦身,安全地减少非必要冗余 第29波-追加中国特色中文相关自定义函数...、农历日期转换相关功能 第35波-Excel版最全单位换算,从此不用到处百度找答案 第36波-新增序列函数用于生成规律性循环重复或间隔序列 第37波-把Sqlserver强大分析函数拿到Excel中用...Excel催化剂插件下载链接:https://pan.baidu.com/s/1kDtFkM5KZ4R1lAO0TO07AA 因插件使用VSTO开发技术完成,插件安装需要电脑满足相关环境配置才能运行

    1.3K20

    『WPS二次开发最新成果』使用外部程序VSTO插件执行JSA宏原创续篇

    昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏推文,其实还有一些后续更劲爆效果,在某些场景上可以有很好发挥。...『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好方式是保存到xlam文件里,用户更无感它存在。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动时自动加载。...使用xlam文件,将它变成普通加载项,不会出现一个新工作薄打开。使用体验更友好。 接着,如果用户想获得某个JSA宏嵌入到它的当下工作薄里,这个又该如何处理。...就算没有Excel/WPS客户端,也可以手撸一个文件出来,实现相应功能,当然代价就是没有任何API接口帮助,只能自己对文本文件进行读写操作。

    40810

    『JSA神助攻之三』将JSA宏另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA宏xlam文件

    以下是历史内容: 昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏推文,其实还有一些后续更劲爆效果,在某些场景上可以有很好发挥。...『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好方式是保存到xlam文件里,用户更无感它存在。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动时自动加载。...使用xlam文件,将它变成普通加载项,不会出现一个新工作薄打开。使用体验更友好。 接着,如果用户想获得某个JSA宏嵌入到它的当下工作薄里,这个又该如何处理。...就算没有Excel/WPS客户端,也可以手撸一个文件出来,实现相应功能,当然代价就是没有任何API接口帮助,只能自己对文本文件进行读写操作。

    16310

    个人永久性免费-Excel催化剂功能第25波-小白适用文本处理功能

    翻看各大插件,都不约而同地出现系列文本处理功能,自己在使用Excel过程中,在临时性需求时,也会用上这几种文本处理,但仅适用于小范围使用使用这些功能不是数据处理正确之道,数据处理核心需求是...此篇提及功能,其实有违数据处理原则,尽可能地少范围使用,可能性能也有瓶颈。Excel催化剂系列功能没有相应撤销功能,没有后悔药可吃,使用前请记得对文档进行保存。 ?...最终重写到单元格中也只有【中国人真是牛】,想更灵活地匹配,建议使用Excel催化剂正则自定义函数实现。...右侧任务窗格展示保存Pattern字符 此为快捷操作调出任务窗格显示Pattern字符串列表,可用于自定义函数编写时调用。...只需鼠标双击Pattern内容列对应行位置,即可把内容保存到剪切板内,写正则自定义函数时可粘贴出来使用。 ?

    1.6K30

    Excel催化剂开源第9波-VSTO开发图片插入功能,图片带事件

    图片插入功能,这个是Excel插件一大刚需,但目前在VBA接口里开发,如果用Shapes.AddPicture方法插入图片,没法对其添加事件,且图片插入后需等比例调整纵横比例特别麻烦,特别是对于插入多个图片非统一纵横尺寸比时...如果换成是VSTO宿主项PictureBox,就完美解决了。 两种不同窗体控件方式插入图片 例如下图中,用鼠标右键事件,调出上下文菜单。...和Excel催化剂中双击图片进行图片下载本地调用Windows图片查看器实现图片放大功能。...具体实现 使用VSTOPictureBox容器,将其图片属性设置成对应图片对象即可,此处传入图片对象是Image对象,不必像VBA方法里只能传入文件全路径,可以方便某些数据库等方式存储二进制图片格式时...,保存关闭后,Excel文件因无法在关闭状态下存储PictureBox对象,将会将其转换为OLE对象存储,设置过事件将失效,Excel催化剂用了复杂手段来恢复它,下篇其他技术时再进行介绍 结语 图片插入这样一个刚需功能

    1.4K40

    Excel催化剂开源第18波-工作表、工作薄保护破解

    VBA代码 这说明在Excel高级开发群体中,特别是VSTO、COM加载项开发群体中,还是守口如瓶,仿佛越是高级开发者,越对自己掌握“核心”技术保密,希望Excel催化剂这一系列开源文章对此风气有所好转...方式未能破解成功,印象中还有一个问题是不懂得如何改写回.NetC#代码,看到是一大坨VBA代码,也看不懂。...文档,这里同样用了很巧妙方式,如果是xls文件非07版格式时,就将其保存为07版格式。...开发者来说,VBA教程已经非常丰富了,但VSTO仍是十分欠缺,但其实也不完成是欠缺,只要合理使用搜索引擎和官方帮助文档,还是可以找到够用知识点使用。...此篇简单地实现广大开发者广为熟知功能,代码换成了C#形式,可在VSTO上实现此功能,希望此代码段在愿意学习、查找的人手中能被找到复用起来。

    1.1K40

    『JSA宏神助攻之三』将JSA宏另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA宏xlam文件

    以下是历史内容: 昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏推文,其实还有一些后续更劲爆效果,在某些场景上可以有很好发挥。...『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好方式是保存到xlam文件里,用户更无感它存在。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动时自动加载。...使用xlam文件,将它变成普通加载项,不会出现一个新工作薄打开。使用体验更友好。 接着,如果用户想获得某个JSA宏嵌入到它的当下工作薄里,这个又该如何处理。...就算没有Excel/WPS客户端,也可以手撸一个文件出来,实现相应功能,当然代价就是没有任何API接口帮助,只能自己对文本文件进行读写操作。

    11110

    Excel文件受损基本急救方法四则

    2、直接修复法 最新版本Excel具有直接修复受损文件功能,大家可以利用Excel新增“打开修复”命令,来直接检查修复Excel文件中错误,只要单击该命令,Excel就会打开一个修复对话框,...3、偷梁换柱法 遇到无法打开受损Excel文件时,大家可以尝试使用Word程序来打开Excel文件,这种方法是利用Word直接读取Excel文件功能实现,它通常适用于Excel文件头没有损坏情况,下面是具体操作步骤...一旦在编辑文件过程中,Excel程序停止响应的话,大家可以强制关闭程序;要是由于突然断电导致文件受损的话,大家可以重新启动计算机运行Excel,这样Excel会自动弹出“文档恢复”窗口,并在该窗口中列出了程序发生意外原因时...”,在出现文件保存对话框中输入文件具体名称;程序在缺省状态下,将文件保存在以前文件夹中; (3)想要查看文件受损修复信息的话,可以直接单击“显示修复”命令; (4)完成了对所有要保留文件相关操作后...,每隔X分钟”复选项,输入指定Excel程序保存自动恢复文件频率; (4)完成设置后,单击“确定”按钮退出设置对话框。

    1.2K140

    Excel催化剂开源第19波-一些虽简单但不知道时还是很难受知识点

    通常许多知识都是在知与不知之间,不一定非要很深奥,特别是Excel这样应用工具层面,明明已经摆在那里,你不知道时,永远地不知道,知道了,简单学习下就已经实现出最终功能效果。...在程序猿世界里,也是一样,很多工具类功能,可以在代码里复用,当不知道时,自己从头造轮子,也是一件吃力不讨好麻烦事。...用户的话,可以供用户修改,程序就是不修改,固定保存程序,比硬代码写在代码里维护要方便。...对于我们OFFICE使用颜色,就是Ole颜色,对应于VBA接口Color属性值 一般来说在VSTO.Net环境下,引用颜色是标准.Net颜色,需要和OFFICE颜色进行转换,转换代码也异常简单...Color转换 日期转换 同样地,在日期转换上,也直接有OLE日期格式,这个方法也是后来偶然知道,在Excel自定义函数里还傻傻地写过一个转换函数。 OLE日期转换1 OLE日期转换2

    80830

    个人永久性免费-Excel催化剂功能第26波-正确Excel密码管理之道

    工作薄保护密码 此密码主要用于保护工作薄结构,让整个工作薄保持当前工作表页数和工作表隐藏显示状态和工作表标签名字不可更改等 4....Excel催化剂开发此功能也仅为了方便大家使用,不用跟着教程做繁杂耗时操作。...VSTO开发,稍好一些,可以挡住大部分VBA开发者,当然专业程序猿也是秒破,通过反编译可以得到代码。...虽然07版及以上文件格式,在工作表保护、工作薄保护密码上更弱,但还是很有必要使用文件格式来作日常文件保存归档。...系列文章 一文带你全面认识Excel催化剂系列功能 安装过程详解及安装失败解决方法 第1波-工作表导航 第2波-数字格式设置 第3波-与PowerbiDesktop互通互联 第4波-一大波自定义函数高级应用

    1.5K20

    Excel实战技巧:创建带有自定义功能Excel加载宏

    创建这个带有自定义功能Excel加载宏将可以有任意工作簿中使用,下面我们详细讲解其创建过程。...图1 在“属性”对话框中,“标题”属性显示加载宏名称,“备注”属性显示加载宏详细说明,如下图2所示。 图2 第3步:添加宏。由于自定义功能每个命令都需要有相应事件处理程序,而这需要宏来实现。...图3 第4步:保存为Exce加载宏(“.xlam”)。 单击“文件——另存为”,在“保存类型”下拉列表中选择“Excel加载宏(*.xlam)”,如下图4所示。...此时,Excel会自动更改为默认加载宏文件夹,你可以导航到你想要保存文件夹。 图4 第5步:在Custom UI Editor中打开编辑加载宏。...图8 此时,在Excel工作簿功能区中出现了一个新选项卡,如下图9所示。单击选项卡组中按钮,会调用相应显示信息。 图9 第7步:修改成中文。

    3K20
    领券