c# - 时间:2019-04-01 标签:c#read/editaccdb宏
问题描述
我正在尝试访问 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
是我想要实现的目标的最佳参考。
查看宏和模块内容的最佳方式是什么?
解决方案
您可以跳过 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();
}
}
}
推荐阅读
- c# - 如何在 Unity 编辑器中使用 ExecuteEvents 停止 OnSceneGUI 滑块拖动事件?
- php - Laravel 6:此路由不支持 GET 方法。支持的方法:POST 错误
- python - 如何在 xlwings 中使用 Replace 方法
- git - 恢复未提交的更改
- r - 如何在 R 的 substr 函数中嵌套 If 语句
- tensorflow.js - 睡眠后可以避免“WebGL:CONTEXT_LOST_WEBGL:looseContext:上下文丢失”吗
- postgresql - SequelizeForeignKeyConstraintError: insert or update on table ... 违反外键约束 \..._id_fkey\"
- java - 如何使用 java 代理和字节伙伴在 MethodDelegation 之后调用原始方法?
- php - 同一个 PHP 文件中有两个相同的 json 对象时出错
- java - 如何根据索引轮换句子中的每个单词?