[办公]word文档合并工具

合并多个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

人已赞赏
AHKV1办公

[VBA][办公]以表格形式在word中插入多个图片

2017-12-28 23:02:31

AHKV1

和谐软件,密码联系QQ1083519055

2017-12-29 22:14:05

2 条回复 A文章作者 M管理员
  1. 好东西,收藏

  2. 赞,关于doc的代码很少见
    不过写的有点复杂,如果能简化就好了,阅读难度较大

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索