使用powershell转换word文件后是否为空白文件



我一直在尝试使用PowerShell将一些.docx文件转换为.docm。我可以转换该文件,但每次打开它时都是空白的。

这是我一直在使用的代码:

Get-ChildItem *.docx | Rename-Item -NewName { $_.name -replace '.docx$','.docm' }

根据其他评论将其添加到此处。

.DOCM只是一个嵌入了宏的Word文档。

你希望看到什么?

在大多数情况下,Word安全性会阻止打开宏文档,除非您告诉Word您接受宏风险,或者您已经禁用了宏风险。

所以,如果这些不是带有宏的.DOC,我不确定你的计划是什么。

如果你只是进入Windows资源管理器,打开一个.docx(非宏(文件,然后手动将其重命名为.docm,然后尝试打开它,你会得到同样的结果。

所以,不是PS或PS特定的代码问题。更改扩展名并不能使其成为true.docm,它必须以这种方式保存在Word中。

正在删除代码重构程序。

FYI。。。有用于此转换的联机工具。尽管我从未使用过或需要使用它们。所以,只要提醒一下。

然而,在查看了我的旧笔记后,如果目标是通过PS实现自动化,这里有更多信息。

如果您真的想在PS中执行此操作,则需要使用PS使用MSOffice COM打开.docx,将VBA/宏代码添加到文档中,然后将其保存为启用宏的文件。

例如,这里有一篇关于的文章

[Converting Word document format with PowerShell][2]
$path = "c:olddocuments" 
$word_app = New-Object -ComObject Word.Application
$Format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatXMLDocument
Get-ChildItem -Path $path -Filter '*.doc' | 
ForEach-Object {
$document      = $word_app.Documents.Open($_.FullName)
$docx_filename = "$($_.DirectoryName)$($_.BaseName).docx"
$document.SaveAs([ref] $docx_filename, [ref]$Format)
$document.Close()
}
$word_app.Quit()

如果您需要将文档转换为PDF,请进行以下更改到脚本中的"另存为"行。17对应于PDF文件在Microsoft Word中执行"另存为"时的格式。

$document.SaveAs([ref] $docx_filename, [ref]17)

Microsoft Word文件格式技术文档在这里:[WdSaveFormat枚举(Word(][3]https://learn.microsoft.com/en-us/office/vba/api/Word.WdSaveFormat

wdFormatFlatXMLMacroEnabled # 20    Open XML file format with macros enabled saved as a single XML file.

最新更新