请耐心等待,我对Microsoft Office程序中的宏很新。以下是一些背景信息:我在企业环境中作为IT团队的一员工作,使用Microsoft Word 2013,我在Windows 7上。我对C:\驱动器具有完全读/写权限,这是我在里面工作。非常感谢任何帮助。
我想要做的是:我想创建一个脚本,首先在目录中创建一个文件夹(在文件路径中不使用\),文件夹标题为文档编号+1(或DocNum + 1),在该目录中生成三个文件(.htm,各自的HTML文件位于自己自动生成的文件夹,.txt。和.rtf中)(每个文件具有完全相同的名称),然后移回父级文件夹并重复此过程。这些文件是通过合并到目录中的邮件创建的电子邮件签名,然后目录文件具有以下脚本来创建文件,以便我们可以将它们向下推并为每个用户远程锁定它们。
这就是我陷入困境的地方:尝试创建名为“DocNum + 1”方案的子文件夹,然后在其中创建文件。我收到错误75.我可以手动创建每个子文件夹,但当然希望脚本工作。即使经过2个小时的谷歌搜索和使用VBA脚本,我还没有想出来。
我不需要任何花哨的东西(由各种错误纠正和双重检查代码行定义),并且希望尽可能简单(只需要使其按预期工作)。我没有也不能安装任何扩展。这是我到目前为止(整个脚本)。那些对VBA更有经验的人可能会看到我在这里要做的事情:
Sub BreakOnPage()
' Used to set criteria for moving through the document by page.
Application.Browser.Target = wdBrowsePage
For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")
' Select and copy the text to the clipboard
ActiveDocument.Bookmarks("\page").Range.Copy
' Open new document to paste the content of the clipboard into.
Documents.Add
Selection.Paste
' Removes the break that is copied at the end of the page, if any.
Selection.TypeBackspace
Selection.TypeBackspace
ChangeFileOpenDirectory "C:\Users\User\Desktop\mm_files"
DocNum = DocNum + 1
MkDir ("C:\Users\User\Desktop\mm_files" & DocNum)
ChangeFileOpenDirectory "C:\Users\User\Desktop\mm_files" & DocNum + 1
ActiveDocument.SaveAs FileName:="Signature" & ".rtf", FileFormat:=wdFormatRTF, AddToRecentFiles:=False
ActiveDocument.SaveAs FileName:="Signature" & ".txt", FileFormat:=wdFormatEncodedText, Encoding:=msoEncodingUSASCII, AddToRecentFiles:=False
ActiveDocument.SaveAs FileName:="Signature" & ".htm", FileFormat:=wdFormatHTML, AddToRecentFiles:=False
ActiveDocument.Close
' Move the selection to the next page in the document
Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub
答案 0 :(得分:0)
您向DocNum
添加1两次:一次在创建文件夹之前,然后在调用ChangeFileOpenDirectory时再次添加。
最好将完整路径传递到SaveAs
,而不是设置默认位置。
Dim DocNum As Long, fPath As String
'...
DocNum = DocNum + 1
fPath = "C:\Users\User\Desktop\mm_files" & DocNum
MkDir fPath
ActiveDocument.SaveAs FileName:=fPath & "\Signature" & ".rtf", _
FileFormat:=wdFormatRTF, AddToRecentFiles:=False
ActiveDocument.SaveAs FileName:=fPath & "\Signature" & ".txt", _
FileFormat:=wdFormatEncodedText, Encoding:=msoEncodingUSASCII, _
AddToRecentFiles:=False
ActiveDocument.SaveAs FileName:=fPath & "\Signature" & ".htm", _
FileFormat:=wdFormatHTML, AddToRecentFiles:=False
ActiveDocument.Close
'...