【问题标题】:Import macros programmatically in Word document在 Word 文档中以编程方式导入宏
【发布时间】:2021-09-30 00:45:04
【问题描述】:

我正在尝试自动化在 Word 文档中导入宏的过程,但我无法在任何启用宏的 Word 文档中加载宏。它仅适用于 Normal.dotm

我想创建一个新文档,并从 .bas 文件中加载宏。

$basPath = "C:\Files\macro.bas"
$docPath = "C:\Files\macro_document.doc"

$word = New-Object -ComObject "Word.Application"
$document = $word.documents.Add()
$document.SaveAs($docPath)

$document.VBProject.VBComponents.Import($basPath)

$document.Save()
$document.Close()
$word.Quit()

我做错了什么?

【问题讨论】:

  • 您是否在 Word 的信任中心 -> 宏设置中检查了您的设置,并确保选中了“信任对 VBA 项目模型的访问”。您还在受信任的位置创建新文档吗?

标签: vba powershell ms-word


【解决方案1】:

使用.SaveAs($docPath,0),其中0 是wdFormatDocument 97-2003

$basPath = "C:\Files\macro.bas"
$docPath = "C:\Files\macro_document.doc"

$word = New-Object -ComObject "Word.Application"
$document = $word.Documents.Add()
$document.VBProject.VBComponents.Import($basPath)
$document.SaveAs($docPath,0) # 0 = wdFormatDocument 97-2003
$document.Close()
$word.Quit()

或者使用扩展名.docm.SaveAs($docPath,13),其中13是wdFormatXMLDocumentMacroEnabled

$basPath = "C:\Files\macro.bas"
$docPath = "C:\Files\macro_document.docm"

$word = New-Object -ComObject "Word.Application"
$document = $word.Documents.Add()
$document.VBProject.VBComponents.Import($basPath)
$document.SaveAs($docPath,13) # 13 = wdFormatXMLDocumentMacroEnabled
$document.Close()
$word.Quit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多