【问题标题】:copy excel cell and paste it to specific word doc复制excel单元格并将其粘贴到特定的word doc
【发布时间】:2018-06-25 06:49:00
【问题描述】:

我是 VBA 新手,我需要将一个单元格(包含数据)从 excel 复制到 特定(不是来自模板)word 文档。特定文件的完整路径将位于目标单元格旁边的单元格中 - 偏移量(0,1)。所有这些显然都在一个循环中,因为我有一个很大的列表和很多文件。

这是我的代码(代码由我在搜索时拾取的部分组成) - 但我得到了一个

对象错误

Sub OpenWordFile()
    Dim oWord As Object
    Dim xRg As Object
    Dim xCell As Range
    Dim xVal As Range
    Dim Workbook As Workbook
    Dim FileName As Variant



    'Word Object

    Set oWord = CreateObject(Class:="Word.Application")
    oWord.Visible = True

    'Open Word Document (need to be multiple files in a loop)

    'oWord.documents.Open FileName:="C:\Users\tamirre\Desktop\New folder\135-185844.doc"      ' OPEN AN EXISTING FILE.
    'Set oWord = Nothing

    'Activating Excel to copy Cells

    ThisWorkbook.Worksheets("Sheet1").Activate
    Set xRg = Application.InputBox("Please select Cells to copy to word docs:", ActiveWindow.RangeSelection.Address, , , , , 8)
    If xRg Is Nothing Then Exit Sub

    For Each xCell In xRg
        xVal = xCell.Value
        Set FileName = xVal.Offset(0, 1) 'Cell Must Contain name and full path of the doc file
        xVal.Copy
            oWord.documents.Open FileName:="FileName"
                Selection.EndKey Unit:=wdStory
                Selection.TypeParagraph
                Selection.PasteExcelTable True, False, False
    Next


End Sub

【问题讨论】:

  • (a) 您可能需要将Selection 更改为oWord.Selection,否则它会认为它指的是Excel 的Selection 对象。 (b) 除非您引用了 Excel 项目中包含的 Word 对象库,否则 wdStory 将默认为零 - 您需要将其设置为 6 (c) 如果 xValxVal = xCell.Value 没有意义是一个Range 对象。我怀疑你只是想说Set xVal = xCell,但我不确定。
  • (d) 您的InputBoxHelpContextID 设置为8。您要么需要添加额外的,,要么使用Type:=8

标签: vba excel ms-word copy


【解决方案1】:

InputBox 返回 String,而不是 Object

Dim 行更改为:

Dim xRg As String

并将InputBox 行更改为:

xRg = InputBox("Please select Cells to copy to word docs:", "Range Selection", ActiveWindow.RangeSelection.Address)
If xRg ="" Then Exit Sub

那么如果你想把它变成Range对象:

Dim xRange As Object
Set xRange = Range(xRg)

但是,我不建议您这样做。用户输入无效内容的机会太多,您会收到错误。

【讨论】:

  • VBA 的InputBox function 返回一个String,但Application.InputBox method 返回一个Variant,并且类型设置为8,它返回一个Variant/Range
  • 有趣。每天学习新东西。
  • LOL - 我刚刚注意到 OP 没有 8 个 Type,它有 8 个 HelpContextID。该行似乎缺少逗号。 (我原以为那一行是少数几个正确的行之一!)
  • 必须注意那些逗号。 ;)
  • 您好,brax 感谢您的快速帮助!但是,当我实施您的更正时,这次我仍然收到错误“对象_'全局'的方法'范围'失败。[运行时错误'1004']。知道为什么吗?@braX
猜你喜欢
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多