我正在编写一个单词中的命令按钮,用于将多个excel电子表格中的命名范围复制并粘贴(作为图片)到相同(打开)的word文档中。在这里得到一些帮助,我得到了一个excel文件的工作,但是当我尝试修改代码进行多次选择时,它所做的就是多次粘贴相同的范围(即从一个工作簿)。 此外,必须有一个更优雅(阅读:更快)的方式,而不是保持打开和关闭excel复制范围......
Private Sub CommandButton1_Click()
Dim objExcel As New Excel.Application, exWb As Workbook
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Risk Assessment Files"
.Filters.Add "Macro-Enabled Excel Files", "*.xlsm"
.AllowMultiSelect = True
If .Show <> -1 Then Exit Sub
For Each vrtSelectedItem In .SelectedItems
Set exWb = objExcel.Workbooks.Open(.SelectedItems(1))
'*** Use the values from excel here***
exWb.Sheets("Risk Assessment").Range("CRA").CopyPicture_
Appearance:=xlScreen, Format:=xlPicture
'*** Close the opened Excel file
exWb.Close Savechanges:=False
Set exWb = Nothing
Selection.EndKey Unit:=wdStory
Selection.Paste
Next vrtSelectedItem
End With
Selection.GoTo What:=wdGoToBookmark, Name:="insertbutton"
MsgBox ("Done")
End Sub
感谢您的帮助......
答案 0 :(得分:1)
每次都打开同一个文件
Set exWb = objExcel.Workbooks.Open(.SelectedItems(1))
这就是为什么所做的只是多次粘贴相同的范围(即从一个工作簿)。改为:
Set exWb = objExcel.Workbooks.Open(vrtSelectedItem)
每次你都会得到一本不同的工作簿。
关于“更优雅的方式”的问题,你需要来打开和关闭要复制的每个工作簿,所以保持这种方式。