1,221
社区成员
发帖
与我相关
我的任务
分享
用C++Builder或Delphi来操作Office的代码,我一般是通过在Office中录制宏,然后翻译代码实现的,由于Office本身的VBA也很复杂,所以有些属性和方法我也不是很清楚其用途,参数以及代码类型好多都是猜出来的。
以下资料部分是从网上摘抄而来。
// 获取Word中"一般选项"的属性(或者也可以叫选项对象),并设置其中几个属性
Variant vOptions = vWordApp.OlePropertyGet("Options");
vOptions.OlePropertySet("WarnBeforeSavingPrintingSendingMarkup", false);
vOptions.OlePropertySet("StoreRSIDOnSave", true);
vOptions.OlePropertySet("ShowMarkupOpenSave", true);
// 如果要想用户只能编辑该文档的一部分,可以先选定可以被用户编辑的那部分文字,然后调用Application.Selection.Editors.Add(-1);
// 该方法只有一个参数,指示了被授予编辑权限的用户是谁(-1代表所有用户).
// Word文件分配给区域和选定部分的权限在文档受到保护之后就会生效,即用户可以对其授权的部分文档进行编辑,但不能编辑没有被受权的部分.
vWordApp.OlePropertyGet("Selection")
.OlePropertyGet("Editors").OleFunction("Add", -1); // wdEditorEveryone
// 保护文档的操作
// Application.ActiveDocument.Protec(Type, NoReset, Password, UseIRM, EnforceStyleLock)
// Type 指定文档的保护类型。类型:3,表示只读.取值:(-1|0|1|2|3).
// NoReset 如果值为 False,则将窗体域重新设置为其默认值。如果值为 True,而指定文档又是处于保护状态,则保留当前窗体域的值.取值:(true|false)
// Password 删除指定文档的保护所需的密码(当需要取消对文档的保护时,系统会提示你输入的密码.如果取消了对文档的保护,任何用户都可以对文档进行编辑)。取值:英文和数字组成字符串
// UseIRM 指定保护文档不被更改时是否使用“信息版权管理”(如果不明白也没有关系,这个值一般为false)。取值:(true|false)
// EnforceStyleLock 指定是否在受保护的文档中实施格式设置限制.取值:(true|false).
try
{
vDoc.OleFunction("Protect",
3, //wdAllowOnlyReading
false, // NoReset:=False,
strPwd.c_str(), // Password,
false, // UseIRM:=False,
true // EnforceStyleLock:=True
);
}