时间:2019-04-01 标签:c#read/editaccdb宏
Posted
技术标签:
【中文标题】时间:2019-04-01 标签:c#read/editaccdb宏【英文标题】:c# read/edit accdb macro 【发布时间】:2021-08-31 16:21:12 【问题描述】:我正在尝试访问 Access 数据库 (accdb) 中的宏。
我尝试使用:
using Microsoft.Office.Interop.Access.Dao;
...
DBEngine dbe = new DBEngine();
Database ac = dbe.OpenDatabase(fileName);
我找到了一个container["Scripts"]
,它有一个document["Macro1"]
,这是我的目标。我正在努力访问文档的内容。我还质疑Microsoft.Office.Interop.Access.Dao
是否是我想要实现的目标的最佳参考。
查看宏和模块内容的最佳方式是什么?
【问题讨论】:
你见过this 即使用doCmd方法运行宏。我想要访问代码,而不仅仅是访问 db 命令。 【参考方案1】:您可以跳过 DAO 部分,在这种情况下不需要它。宏是特定于项目的,因此为了获得所有宏,您需要遍历您的项目。在我的示例中,我只有一个项目。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Access;
namespace Sandbox48
public class Program
public static void Main(string[] args)
Microsoft.Office.Interop.Access.Application oAccess = null;
string savePath = @"C:\macros\";
oAccess = new Microsoft.Office.Interop.Access.Application();
// Open a database in exclusive mode:
oAccess.OpenCurrentDatabase(
@"", //filepath
true //Exclusive
);
var allMacros = oAccess.CurrentProject.AllMacros;
foreach(var macro in allMacros)
var fullMacro = (AccessObject)macro;
Console.WriteLine(fullMacro.Name);
oAccess.SaveAsText(AcObjectType.acMacro, fullMacro.FullName, $"savePath fullMacro.Name.txt");
Console.Read();
【讨论】:
感谢您的回复。我认为 DAO 可能会进入比要求更深入的参考。我在网上找到的 office.interop 文档似乎不是很全面。你知道有什么地方有不错的文档吗? 另外,我会使用 oAccess.CloseCurrentDatabase() 命令释放对象。它使实例在内存中保持打开状态。以上是关于时间:2019-04-01 标签:c#read/editaccdb宏的主要内容,如果未能解决你的问题,请参考以下文章
时间:2019-04-01 标签:c#com object can't get ref object values
时间:2019-04-01 标签:c#mongodb database collection find
时间:2019-04-01 标签:c#dllimport parameters shift
时间:2019-04-01 标签:c#swagger openapi erronous refs when nested classes