将excel工作簿中的命名范围复制并粘贴到一个word文档中

时间:2017-02-08 23:25:06

标签: vba ms-word

我正在编写一个单词中的命令按钮,用于将多个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

感谢您的帮助......

1 个答案:

答案 0 :(得分:1)

每次都打开同一个文件

  

Set exWb = objExcel.Workbooks.Open(.SelectedItems(1))

这就是为什么所做的只是多次粘贴相同的范围(即从一个工作簿)。改为:

Set exWb = objExcel.Workbooks.Open(vrtSelectedItem)

每次你都会得到一本不同的工作簿。

关于“更优雅的方式”的问题,你需要来打开和关闭要复制的每个工作簿,所以保持这种方式。