com操作word批量替换word指定文字的示例
Moderators: tmplinshi, arcticir
com操作word批量替换word指定文字的示例
近期要做一些重复性工作,批量替换word中的相关文字,能否帮忙写一下相关示例吗,非常感谢!
Re: com操作word批量替换word指定文字的示例
Code: Select all
^2:: ;热键“CTRL+数字2”复制转换“员工电子设备清单和资产卡片登记表.xlsx”的选中行内容到桌面“费控固定资产卡片明细.xls”和“实物资产卡片n.docx”。
{
if WinActive("电子设备清单和资产卡片登记表")
{
try objExcel1:=ComObjActive("Excel.Application") ;避免脚本启动时Excel或WPS并未运行,按热键产生错误。
catch Error
{
MsgBox "脚本先于Excel文件运行导致操作无效,再按一次热键 Ctrl 2 即可。", "提示", "OK Iconi T5"
WinActivate , , "电子设备清单和资产卡片登记表" ;激活其他窗口,避免if WinActive("...")判断条件不成立。
Reload ;脚本重载会自动激活之前的Excel或WPS窗口
}
Send "{Esc}"
Sleep 200
objWord:=ComObject("Word.Application") ;固定资产和低值易耗品均需生成实物资产卡片
Loop objExcel1.Selection.Rows.Count
{
FileCopy A_ScriptDir "\实物资产卡片模板.docx", A_Desktop "\实物资产卡片" A_Index ".docx", true
objWord.Documents.Open(A_Desktop "\实物资产卡片" A_Index ".docx")
objWord.Selection.Find.ClearFormatting
objWord.Selection.Find.Replacement.ClearFormatting
objWord.Selection.Find.Execute("卡片编号B2", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,2).Value, 1)
objWord.Selection.Find.Execute("资产卡片名称A1", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,1).Value, 1)
objWord.Selection.Find.Execute("型号H8", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,8).Value, 1)
objWord.Selection.Find.Execute("计量单位M13", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,13).Value, 1)
objWord.Selection.Find.Execute("卡片数量E5", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,5).Value, 1)
objWord.Selection.Find.Execute("发票日期K11", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,11).Value, 1)
objWord.Selection.Find.Execute("卡片总金额F6", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,6).Value, 1)
objWord.Selection.Find.Execute("存放地点Q17", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,17).Value, 1)
objWord.Selection.Find.Execute("设备位置R18", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,18).Value, 1)
objWord.Selection.Find.Execute("资产类别#", 1, , , , , , 1, , objExcel1.ActiveSheet.Name, 1)
objWord.Selection.Find.Execute("管理员N14", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,14).Value, 1)
objWord.Selection.Find.Execute("领用人O15", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,15).Value, 1)
objWord.Selection.Find.Execute("负责人P16", 1, , , , , , 1, , objExcel1.Selection.cells(A_Index,16).Value, 1)
objWord.ActiveDocument.Save
objWord.ActiveDocument.Close
}
objWord.Quit
if objExcel1.ActiveSheet.Name="固定资产" ;低值易耗品无需生成卡片明细
{
objExcel2:=ComObject("Excel.Application")
objExcel2.DisplayAlerts := False ;不提示覆盖同名文件
objExcel2.Workbooks.Add
objExcel2.Sheets("Sheet1").Columns.NumberFormatLocal := "@" ;设置所有列文本格式
objExcel2.Sheets("Sheet1").Range("A1:I1").Interior.Color := 0xFCCA97 ;设置标题行背景色
objExcel2.Sheets("Sheet1").cells(1,1).Value := "资产卡片名称(*)"
objExcel2.Sheets("Sheet1").cells(1,2).Value := "卡片编号(*)"
objExcel2.Sheets("Sheet1").cells(1,3).Value := "资产大类"
objExcel2.Sheets("Sheet1").cells(1,4).Value := "部门编号(*)"
objExcel2.Sheets("Sheet1").cells(1,5).Value := "卡片数量(*)"
objExcel2.Sheets("Sheet1").cells(1,6).Value := "卡片总金额(*)"
objExcel2.Sheets("Sheet1").cells(1,7).Value := "规格"
objExcel2.Sheets("Sheet1").cells(1,8).Value := "型号"
objExcel2.Sheets("Sheet1").cells(1,9).Value := "序列号"
Loop objExcel1.Selection.Rows.Count
{
objExcel2.Sheets("Sheet1").cells(A_Index+1,1).Value := objExcel1.Selection.cells(A_Index,1).Value ;资产卡片名称(*)
objExcel2.Sheets("Sheet1").cells(A_Index+1,2).Value := objExcel1.Selection.cells(A_Index,2).Value ;卡片编号(*)
objExcel2.Sheets("Sheet1").cells(A_Index+1,3).Value := objExcel1.Selection.cells(A_Index,3).Value ;资产类别
objExcel2.Sheets("Sheet1").cells(A_Index+1,4).Value := objExcel1.Selection.cells(A_Index,4).Value ;部门编号(*)
objExcel2.Sheets("Sheet1").cells(A_Index+1,5).Value := objExcel1.Selection.cells(A_Index,5).Value ;工卡片数量(*)
objExcel2.Sheets("Sheet1").cells(A_Index+1,6).Value := objExcel1.Selection.cells(A_Index,6).Value ;卡片总金额(*)
objExcel2.Sheets("Sheet1").cells(A_Index+1,7).Value := objExcel1.Selection.cells(A_Index,7).Value ;规格
objExcel2.Sheets("Sheet1").cells(A_Index+1,8).Value := objExcel1.Selection.cells(A_Index,8).Value ;型号
objExcel2.Sheets("Sheet1").cells(A_Index+1,9).Value := objExcel1.Selection.cells(A_Index,9).Value ;序列号
}
objExcel2.Sheets("Sheet1").Columns.AutoFit
; 费控导入需要Excel97-2003工作簿格式 https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlfileformat
objExcel2.ActiveWorkbook.SaveAs(A_Desktop "\费控固定资产卡片明细.xls", 56) ;不能用xlExcel8只能用56
objExcel2PID:=WinGetPID("费控固定资产卡片明细.xls")
objExcel2.ActiveWorkbook.Close
objExcel2.Quit ;似乎不生效,可能跟保存的是xls格式有关。
if ProcessExist(objExcel2PID) ;结束残留进程objExcel2
ProcessClose objExcel2PID
}
MsgBox "【实物资产卡片n.docx】和【费控固定资产卡片明细.xls】已在桌面生成。", "提示", "OK Iconi T5"
}
}
[Mod edit: Added [code][/code] tags. Please use them yourself when posting code.]