【问题标题】:automatically enabling macros in excel c#在excel c#中自动启用宏
【发布时间】:2019-11-25 16:12:56
【问题描述】:

我正在通过 c# 从嵌入式 excel 表访问数据,但为了让脚本读取 excel 表,我必须每次都手动按下“启用宏”。我怎样才能编写一个脚本,让它每次都自动启用宏?我正在打开各种 Excel,因此无法更改 Excel 工作表本身的设置。

我看到了一些有关使用 VBA 的信息,但不确定该怎么做?使用这个参考(使用 VBA = Microsoft.Vbe.Interop)会有帮助吗?

下面的代码只是打开了excel,但我还是要点击启用宏。

using Excel = Microsoft.Office.Interop.Excel; 
using Word = Microsoft.Office.Interop.Word;

wordApp = new Word.Application();
xlApp = new Excel.Application();
wordDoc = wordApp.Documents.Open(@"Y:DocumentName");
Word.InlineShapes ils = wordDoc.InlineShapes;
ils[1].OLEFormat.Activate();
xlWorkBook = ils[1].OLEFormat.Object;

【问题讨论】:

  • 具有较低安全性的宏安全设置,或使您的文件成为受信任的文档。没有启用宏的编程方式,这是一个安全问题。否则,每个宏病毒都会这样做。
  • 不确定是不是那个意思,但这听起来很恶意。
  • 如果有人能回答这个问题,我很想知道。 (我敢肯定,MS 的人也会如此)。 @MathieuGuindon 有一个很好的观点。
  • 有一些脚本可以让您直接访问 VBA 对象,然后关闭这些安全设置,但它会引发一系列安全问题,不推荐使用。
  • 另外,Microsoft.Vbe.Interop 是 VBE(Visual Basic 编辑器)扩展性 API,您将使用它来扩展 VBA IDE 本身 - VBE 插件,如 @ 987654321@广泛使用。

标签: c# excel vba visual-studio


【解决方案1】:

您是否尝试将 DisplayAlerts 属性设置为 false?

xlApp.DisplayAlerts = false;

【讨论】:

  • 只是关闭警报不会覆盖 Excel 中的安全设置,所以我怀疑这会起作用。请参阅上面 Mathieu 的帖子。
  • 它适用于我,但我已将信任中心配置为启用“禁用所有带有通知的宏”。
猜你喜欢
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2023-03-18
  • 2012-03-15
相关资源
最近更新 更多