自动邮件合并

时间:2016-03-12 15:49:08

标签: excel vba batch-file ms-word

以下是我原帖中的问题:

我有一个Word模板(dotm),其中包含我想从单行/入口Excel文件填写的字段。我有一个" Rough.txt",除了Excel文件中的信息之外,我想将其内容插入到同一邮件合并生成的文档中的特定位置。

我想从这个脚本编写过程生成一个DOC或DOCX,它保存在与上述文件相同的目录中。我希望通过单击运行bat文件或类似类型的情况来完成此操作,这种情况不涉及我手动打开文件并且每次我想要执行此操作时单击按钮。我希望它比手动打开单词并运行宏更简单。

另外,如果我可以把它放在可执行文件/" runnable"像蝙蝠或类似的东西文件,然后我可以附加一个快捷方式,并使用Cortana语音命令运行它。这就是我从这个角度来看待它的原因。这将是一个创业板。这里重要的是它在我告诉它时运行,而不是在某个时间安排。我和其他蝙蝠一起取得了巨大的成功。

所以我使用了所有答案的组合来构建以下内容:

我有一个带有一堆FART命令的bat文件来纠正文档中的许多常见语法错误;它不相关而且很长,所以我不会在这里发布。它被称为FINISH-1.bat。

然后我有第二个BAT文件,FINISH-2.bat,它只包含以下内容:

"C:\Program Files\Microsoft Office 15\root\office15\winword.exe" "/mRunAllMacros" "C:\Transcription\Transcription\In Progress\NewKCJob\Transcript.docx"

然后我创建了大约20个查找/替换Microsoft Word宏的样式,我不会在这里发布,因为这与问题无关。

我在Word中再创建了两个与我的问题相关的宏。以下内容完成了我的Excel文件的邮件合并,该文件从Jotform导出。

Sub MailMergeCover()
'
' MailMergeCover Macro
'
'
ActiveDocument.MailMerge.OpenDataSource Name:= _
    "C:\Transcription\Transcription\In Progress\JotformExport.xlsx", _
    ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
    AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
    WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
    Format:=wdOpenFormatAuto, Connection:= _
    "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Transcription\Transcription\In Progress\JotformExport.xlsx;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet " _
    , SQLStatement:="SELECT * FROM `Submissions$`", SQLStatement1:="", _
    SubType:=wdMergeSubTypeAccess
With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
        .FirstRecord = wdDefaultFirstRecord
        .LastRecord = wdDefaultLastRecord
    End With
    .Execute Pause:=False
End With
Windows("Transcript.docx [Compatibility Mode]").Activate
End Sub

以下宏插入我的" Rough.Txt"在我插入的书签中记录相同的成绩单/ Word文档,称为"粗略":

Sub InsertRough()
'
' InsertRough Macro
'
'
If ActiveDocument.Bookmarks.Exists("rough") = True Then
    ActiveDocument.Bookmarks("rough").Select
    Selection.InsertFile FileName:="C:\Transcription\Transcription\In Progress\NewKCJob\Rough.txt"
Else
    MsgBox "Bookmark ""rough"" does not exist!"
End If
End Sub

下一步是按照特定顺序将它们全部绑定在Word中,这样我之前提到的查找/替换宏也适用于" Rough.txt":

Sub RunAllMacros()
Call InsertRough
Call Macro1
Call Macro2
Call Macro3
Call Macro4
Call Macro5
Call Macro6
Call Macro7
Call Macro8
Call Macro9
Call Macro10
Call Macro11
Call Macro12
Call Macro13
Call Macro14
Call Macro15
Call Macro16
Call Macro17
Call Macro18
Call Macro19
Call Macro20
Call MailMergeCover
End Sub

倒数第二步是制作第三个bat文件,即Cortana将使用的FINISH.bat来调用两个bat文件:

call "C:\Transcription\Transcription\In Progress\NewKCJob\FINISH-1.bat"
call "C:\Transcription\Transcription\In Progress\NewKCJob\FINISH-2.bat"

最后一步是在C:\ Users \ Username \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs中创建FINISH.bat的快捷方式,名为"完成工作"为Cortana索引。

现在,我可以说,"嘿,Cortana,开放式工作,"它会自动为我做这件事。

我刚刚完成每个成绩单20分钟到一个小时,因为我手动完成了许多这些修正。我想尽可能地尊重和遵守规则,所以如果我没有提供足够的细节或做出异常的事情,请告诉我,以便我能解决它。再次,谢谢你!!真的,如果没有你的帮助,我无法制作这个。

1 个答案:

答案 0 :(得分:0)

根据您提供的信息:

  1. 为此创建模板(* .dotm)。在Windows中双击它 资源管理器/桌面将创建一个新文档。
  2. 文本文件:我假设插入“按原样”,后面没有     处理,所以只需使用文件中的插入/文本/对象/文本     Word UI中的命令。单击“插入”按钮旁边的箭头     在对话框中选择插入链接。
  3. 使用Word的内置邮件/邮件合并工具链接到Excel 数据源
  4. 录制宏以执行邮件合并。
  5. 在模板中创建一个名为AutoNew的宏并复制其内容 录制的宏进入它。该宏将自动执行 何时从模板创建新文档。