论文部分内容阅读
同事急忽忽的前来求助,单位人员近三年的年度考核结果都保存在Excel表格,如图1所示,这里按照姓名、考核结果列出了所有人员的年度考核结果,她现在需要将这些考核结果导入到已形成的《干部任免考核表》的“年度考核结果”单元格,但这些任免考核表都是Word格式,由于考核人员接近千人,如果全部通过手工的方法完成导入,工作量可想而知,而且也很容易出现错误,有没有简单方便一些的方法呢?
我们可以借助VBA代码完成这一任务,打开Excel格式的年度考核表,按下“Alt+F11”组合键,打开Microsoft Visual Basic for Applications编辑器窗口,依次选择“插入→模块”,在右侧窗格插入一个空白模块,在这里手工输入或粘贴如下代码:
Sub test()
Dim WordApp As New Word.Application, MyFile$, arr, i%
arr = Range("A1").CurrentRegion
MyPath = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
For i = 2 To UBound(arr)
MyFile = Dir(MyPath & "*.doc")
Do While MyFile <> ""
If InStr(MyFile, arr(i, 1)) And MyFile <> ThisWorkbook.Name Then
d = True
With GetObject(MyPath & MyFile)
.tables(2).cell(2, 2).Range.text = arr(i, 2)
.Close True
End With
End If
MyFile = Dir
Loop
Next
MsgBox "批量导入完成!"
Application.ScreenUpdating = True
End Sub
上述代码的“test”可以根据喜好任意设置,导入完成之后的提示信息也可以按照需要设置,检查无误之后依次选择“文件→关闭并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”组合键,打开“宏”对话框,选择并运行宏,此时会看到图2所示的“批量导入完成”的对话框,随后会在相应的Word表格完成年度考核结果的批量填充,效果如图3所示。如果提示“找不到工程或库”,请打开“引用 - VBAProject”对 话框,在可使用的引用列表下勾选“Microsoft Word 16.0 object Library”复选框,确认之后即可生效。
我们可以借助VBA代码完成这一任务,打开Excel格式的年度考核表,按下“Alt+F11”组合键,打开Microsoft Visual Basic for Applications编辑器窗口,依次选择“插入→模块”,在右侧窗格插入一个空白模块,在这里手工输入或粘贴如下代码:
Sub test()
Dim WordApp As New Word.Application, MyFile$, arr, i%
arr = Range("A1").CurrentRegion
MyPath = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
For i = 2 To UBound(arr)
MyFile = Dir(MyPath & "*.doc")
Do While MyFile <> ""
If InStr(MyFile, arr(i, 1)) And MyFile <> ThisWorkbook.Name Then
d = True
With GetObject(MyPath & MyFile)
.tables(2).cell(2, 2).Range.text = arr(i, 2)
.Close True
End With
End If
MyFile = Dir
Loop
Next
MsgBox "批量导入完成!"
Application.ScreenUpdating = True
End Sub
上述代码的“test”可以根据喜好任意设置,导入完成之后的提示信息也可以按照需要设置,检查无误之后依次选择“文件→关闭并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”组合键,打开“宏”对话框,选择并运行宏,此时会看到图2所示的“批量导入完成”的对话框,随后会在相应的Word表格完成年度考核结果的批量填充,效果如图3所示。如果提示“找不到工程或库”,请打开“引用 - VBAProject”对 话框,在可使用的引用列表下勾选“Microsoft Word 16.0 object Library”复选框,确认之后即可生效。