如何从工作表中复制excel范围并使用word vba

时间:2017-08-24 15:09:37

标签: word-vba

我正在尝试使用Excel工作表中的信息自动填充word文档。我希望用户能够选择所需的excel文件,并希望我的宏从excel文件的不同工作表中复制特定范围,并将其粘贴到word中的特定区域。到目前为止,我能够打开一个我选择的excel文件,但不确定选择范围和粘贴到特定位置是如何工作的。此外,我正在使用单词VBA执行所有这些操作,并且还希望使用单词VBA来复制粘贴excel范围。我正在尝试从名为Main的表格中复制单元格C25,并从名为summary的表格中将表格从A5到C28复制。单元格C25是一个名称所以我想把它放在一个单词文档中,说明亲爱的名字和帖子后面的表格,请看下面的摘要:。这是我到目前为止,它允许我选择excel文件并打开它。 / p>

Sub Macro1_FileOpen()
'
' Macro1_FileOpen Macro
'
'
'Dim FilePath As Object
'Dim dSource As String

'With Me.Application.FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogOpen)

   ' .AllowMultiSelect = True
    '.Filters.Clear
    '.Filters.Add "Excel Files", "*.xls;*.xlw"
   ' .Filters.Add "All Files", "*.*"

   ' If .Show = True Then
    '    .Execute()
    'End If
'End With

Dim xlApp As Object
Dim xlBook As Object
Dim dSource As String
Dim ExcelWasNotRunning As Boolean
Dim MyDOc As Word.Document
Dim fd As FileDialog




Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
    .Title = "Select the file that you wish to use."
    .InitialFileName = strFolder
    .Filters.Clear
    .Filters.Add "Excel Files", "*.xls?"
    .AllowMultiSelect = False
    If .Show = -1 Then
        dSource = .SelectedItems(1)
    Else
        MsgBox "You cancelled the operation"
        Exit Sub
    End If
End With
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err Then
    ExcelWasNotRunning = True
    Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
With xlApp
    Set xlBook = .Workbooks.Open(dSource)
    MsgBox "The workbook" & vbCr & dSource & vbCr & "is open!"

    'Insert code to do what you need to do with the workbook here



    Set xlBook = Nothing
End With
If ExcelWasNotRunning Then
    xlApp.Quit
End If
Set xlBook = Nothing
Set xlApp = Nothing
Set fd = Nothing
End Sub

1 个答案:

答案 0 :(得分:0)

这看起来像是在马拉松赛的第一英里之后疲惫的双腿:-)。你将不得不继续对你开始的方式进行思考。但要避免将所有内容声明为Object。 xlApp是一个Excel.Application。 xlBook是一个Excel.Workbook。 MyDoc是一个Word.Document,但是当您从Word运行代码时,不需要指定Word。

但您必须设置MyDoc,例如Set MyDoc = ActiveDocument。 声明Dim Ws As Excel.WorksheetSet Ws = xlBook.Worksheets("Main") 您将需要一个字符串来从xlBook中获取文本。所以Dim Tmp As String。 然后你可以说Tmp = Ws.Cells(25, "C").Value,在MyDoc中查找地点并将其插入那里。

然后您可以声明Dim Tbl As Table

Set Ws = xlBook.Worksheets("Summary")
With Ws
    Set Tbl = .Range(.Cells(5, "A"), .Cells(28, "C"))
End With

实际上,我无法确定这是否有效 - 将Excel范围分配给Word表格 - 但如果不是,您可以尝试直接将Excel.Range复制到Word文档中,或尝试录制执行它们时的步骤,或在此处询问有关如何将Excel范围复制到Word文档的特定问题。我想在这里提出的观点很简单,在你遇到任何无法用疲倦感来解释的问题之前,你的项目还有许多细节要做。保持良好的工作,伙计。还有祝你好运! (请尽量避免任何看起来像后续问题的事情,哈哈:)