合并多个word文档,可指定分页符,分节符等形式
合并多个word文档,可指定分页符,分节符等形式
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. #SingleInstance Force FileInstall ,D:\2 IE天使\ICO图标制作\ICO图标文件2\ICO2\s023.ico,c:\3.ico,1 If fileExist("C:\3.ico") Menu, Tray, Icon, c:\3.ico, , 1 ;显示图标 try { wd:=ComObjActive("word.Application") }catch e{ ;用于捕获错误,未启动word就抛出!!! MsgBox 当前未启动word,请先打开word,注意不是WPS!!! return } SetWorkingDir %A_ScriptDir% Gui word文档合并工具:Font, s13 Gui word文档合并工具:Add, Text, x150 y1 w538 h50 +0x200, word文档合并工具(by 张磊) ;后面可修饰字体颜色,字号等; Gui word文档合并工具:Add, Button, x420 y10 w108 h30 g关于, 关于... ;后面可修饰字体颜色,字号等; Gui word文档合并工具:Add, Checkbox, x40 y175 w230 h20 v子文件夹 checked, 合并子文件夹中的所有文档 Gui word文档合并工具:Add, Checkbox, x300 y175 w200 h20 v扩展名, 显示扩展名 Gui word文档合并工具:Add, CheckBox, x302 y211 w120 h23 Checked v文件名, 插入文件名 Gui word文档合并工具:Add, CheckBox, x305 y245 w120 h23 v分节符, 插入分节符 Gui word文档合并工具:Add, ComboBox , x433 y245 w105 Choose5 v选择 g提示, 2-分节符|3-连续|4-偶数|5-奇数|7-分页符|8-分栏符|11-手动换行 Gui word文档合并工具:Add, Button, x40 y205 w100 h70 g开始合并, 开始合并 Gui word文档合并工具:Add, Button, x184 y205 w100 h70 g插入当前文档, 插入当前文档 Gui word文档合并工具:Font Gui word文档合并工具:Font, s14 Gui word文档合并工具:Add, Text, x28 y44 w538 h50 +0x200, 将要合并的文件夹拖入,或者定位文件夹(必须先打开word) Gui word文档合并工具:Font Gui word文档合并工具:Add, Edit, x32 y112 w366 h49 vEdit1 Gui word文档合并工具:Add, Button, x407 y118 w75 h47 g定位, 定位 Gui word文档合并工具:Show, w550 h314, Word文档合并工具 ;~ Control, ChooseString, 7-分页符, ComboBox1,A ;复选框预先选定的方法1 ;~ Control, Choose,1, ComboBox1,A ;复选框预先选定的方法2 Return ;autogui如何反相生成gui? word文档合并工具GuiEscape: word文档合并工具GuiClose: ExitApp ; End of the GUI section 关于: MsgBox 暂时未添加说明! return 提示: gui,submit,NoHide ToolTip,将在文档中插入%选择%! sleep 2000 ToolTip return 开始合并: ;待合并入excel部分; Gui, Submit ;~ MsgBox % 文件名 "-----" 扩展名 "-----" 选择 if(Edit1="") ExitApp doc0:=wd.documents.add loop ,parse,Edit1,`n,`r { if (FileExist(A_LoopField)="D") ;目录判断 { Loop ,%A_LoopField%\*.doc*, 0, %子文件夹% ;第三个参数:0-仅文件;1-文件+文件夹;2-仅文件夹,但是若是前面仅仅给出个母文件夹的话,可以但限制了具体文件后缀的话2就无效了;最后一个为1时为递归; { st:=doc0.range.end-1 if(文件名=1) { if(扩展名=1) doc0.range.InsertAfter(A_LoopFileName "`r`n") ;带扩展名 else doc0.range.InsertAfter(RegExReplace(A_LoopFileName,"`ami)\..*$") "`r`n") ;不带扩展名 doc0.Range(st,doc0.range.end-1).Style := ("标题 2") doc0.Range(st,doc0.range.end-1).Font.Color:=255 ;0x0000FF ;RGB(255, 0, 0) } doc0.range(doc0.range.end-1,doc0.range.end-1).Insertfile(A_LoopFileLongPath) ;插入文件 if(分节符=1) doc0.range(doc0.range.end-1,doc0.range.end-1).InsertBreak(StrSplit(选择,"-")[1]*1) ;此处乘以1用于转换字符串为数字格式; } } else if(FileExist(A_LoopField) && RegExMatch(A_LoopField,"doc")) { st:=doc0.range.end-1 if(文件名=1) { file_name:=RegExReplace(A_LoopField,"^.*\\") if(扩展名=1) doc0.range.InsertAfter(RegExReplace(A_LoopField,"`ami)^.*\\") "`r`n") ;带扩展名 else doc0.range.InsertAfter(RegExReplace(A_LoopField,"`ami)^.*\\|\..*$") "`r`n") ;不带扩展名 doc0.Range(st,doc0.range.end-1).Style := ("标题 2") doc0.Range(st,doc0.range.end-1).Font.Color:=255 ;0x0000FF ;RGB(255, 0, 0) } doc0.range(doc0.range.end-1,doc0.range.end-1).Insertfile(A_LoopField) ;插入文件 if(分节符=1) doc0.range(doc0.range.end-1,doc0.range.end-1).InsertBreak(StrSplit(选择,"-")[1]*1) ;此处乘以1用于转换字符串为数字格式; } } WinActivate, % doc0.name ;激活文档 MsgBox 恭喜,已合并完成!!! ;~ doc0.saveas "c:\tesd.doc" ExitApp return 插入当前文档: Gui, Submit if(Edit1="") ExitApp wd:=ComObjActive("word.application") doc0:=wd.ActiveDocument loop ,parse,Edit1,`n,`r { if (FileExist(A_LoopField)="D") ;目录判断 { Loop ,%A_LoopField%\*.doc*, 0, %子文件夹% ;第三个参数:0-仅文件;1-文件+文件夹;2-仅文件夹,但是若是前面仅仅给出个母文件夹的话,可以但限制了具体文件后缀的话2就无效了;最后一个为1时为递归; { st:=wd.selection.end-1 if(文件名=1) { if(扩展名=1) wd.selection.InsertAfter(A_LoopFileName "`r`n") ;带扩展名 else wd.selection.InsertAfter(RegExReplace(A_LoopFileName,"`ami)\..*$") "`r`n") ;不带扩展名 doc0.Range(st,wd.selection.end-1).Style := ("标题 2") doc0.Range(st,wd.selection.end-1).Font.Color:=255 ;0x0000FF ;RGB(255, 0, 0) } doc0.range(wd.selection.end-1,wd.selection.end-1).Insertfile(A_LoopFileLongPath) ;插入文件 if(分节符=1) doc0.range(wd.selection.end-1,wd.selection.end-1).InsertBreak(StrSplit(选择,"-")[1]*1) ;此处乘以1用于转换字符串为数字格式; } } else if(FileExist(A_LoopField) && RegExMatch(A_LoopField,"doc")) { st:=wd.selection.end-1 if(文件名=1) { file_name:=RegExReplace(A_LoopField,"^.*\\") if(扩展名=1) doc0.range.InsertAfter(RegExReplace(A_LoopField,"`ami)^.*\\") "`r`n") ;带扩展名 else wd.selection.InsertAfter(RegExReplace(A_LoopField,"`ami)^.*\\|\..*$") "`r`n") ;不带扩展名 doc0.Range(st,wd.selection.end-1).Style := ("标题 2") doc0.Range(st,wd.selection.end-1).Font.Color:=255 ;0x0000FF ;RGB(255, 0, 0) } doc0.range(wd.selection.end-1,wd.selection.end-1).Insertfile(A_LoopField) ;插入文件 if(分节符=1) doc0.range(wd.selection.end-1,wd.selection.end-1).InsertBreak(StrSplit(选择,"-")[1]*1) ;此处乘以1用于转换字符串为数字格式; } } WinActivate, % doc0.name ;激活文档 MsgBox 恭喜,已插入完成!!! ;~ doc0.saveas "c:\tesd.doc" ExitApp return 定位: FileSelectFolder,fod,,3,文件夹选择 ;FileSelectFolder, OutputVar, ::{20d04fe0-3aea-1069-a2d8-08002b30309d} ; 我的电脑. if(fod="") return GuiControl,, Edit1, %fod% return word文档合并工具GuiDropFiles: SelectedFileName := A_GuiEvent MouseGetPos, , , id, control ;~ WinGetTitle, title, ahk_id %id% WinGetClass, class, ahk_id %id% ;~ ToolTip, ahk_id %id%`nahk_class %class%`n%title%`nControl: %control% if (control="Edit1") { GuiControl,, Edit1, %SelectedFileName% ; 在控件中显示文本. } if (control="Edit2") { GuiControl,, Edit2, %SelectedFileName% ; 在控件中显示文本. } return
🙄 赞,关于doc的代码很少见
不过写的有点复杂,如果能简化就好了,阅读难度较大
好东西,收藏 ✗棒棒的✗