将整个故事从Word复制并粘贴到Excel

将整个故事从Word复制并粘贴到Excel,excel,vba,Excel,Vba,我有一个定期收到的Word文档,它需要与Excel中已有的其他数据合并,作为更大输出的一部分。我可以将整个文档(完整文档)从Word复制并粘贴到Excel中,但我想将此部分作为整个Excel输出宏的一部分。我当前的代码如下所示,除了不粘贴任何内容外,它工作正常。当它到达那里时,没有数据可以粘贴,所以我猜它不是没有开始拾取它,就是没有将它带过来。正在寻求这方面的帮助。非常感谢 Sub ImportSectHWord() Dim objWord As Object Dim objDoc As Ob

我有一个定期收到的Word文档,它需要与Excel中已有的其他数据合并,作为更大输出的一部分。我可以将整个文档(完整文档)从Word复制并粘贴到Excel中,但我想将此部分作为整个Excel输出宏的一部分。我当前的代码如下所示,除了不粘贴任何内容外,它工作正常。当它到达那里时,没有数据可以粘贴,所以我猜它不是没有开始拾取它,就是没有将它带过来。正在寻求这方面的帮助。非常感谢

Sub ImportSectHWord()

Dim objWord As Object
Dim objDoc As Object
Dim wdFileName

Set objWord = CreateObject("word.Application")
wdFileName = Application.GetOpenFilename("Word Documents, *.doc*")

If wdFileName = False Then Exit Sub

Set objDoc = GetObject(wdFileName)

objWord.Documents.Open (wdFileName)
objWord.Selection.WholeStory
Selection.Copy

Worksheets("H Import").Select
Range("A1").Select
ActiveSheet.Paste

objDoc.Close SaveChanges:=wdDoNotSaveChanges
objWord.Quit

End Sub
声明

Selection.Copy
正在复制Excel中当前选定的内容

要复制Word中的
选择
对象,请使用

objWord.Selection.Copy
在使用方法和属性时,即使VBA提供了默认对象,也最好限定所引用的对象

Sub ImportSectHWord()
    'It is better to always define constants, even though they will default to zero
    ' which just happens to be the desired value in this case
    Const wdDoNotSaveChanges As Long = 0

    Dim objWord As Object
    Dim objDoc As Object
    Dim wdFileName

    Set objWord = CreateObject("word.Application")
    wdFileName = Application.GetOpenFilename("Word Documents, *.doc*")

    If wdFileName = False Then Exit Sub

    Set objDoc = GetObject(wdFileName)

    objWord.Documents.Open (wdFileName)
    objWord.Selection.WholeStory
    objWord.Selection.Copy

    ActiveWorkbook.Worksheets("H Import").Select
    ActiveWorkbook.Worksheets("H Import").Range("A1").Select
    ActiveWorkbook.ActiveSheet.Paste

    objDoc.Close SaveChanges:=wdDoNotSaveChanges
    objWord.Quit

End Sub
声明

Selection.Copy
正在复制Excel中当前选定的内容

要复制Word中的
选择
对象,请使用

objWord.Selection.Copy
在使用方法和属性时,即使VBA提供了默认对象,也最好限定所引用的对象

Sub ImportSectHWord()
    'It is better to always define constants, even though they will default to zero
    ' which just happens to be the desired value in this case
    Const wdDoNotSaveChanges As Long = 0

    Dim objWord As Object
    Dim objDoc As Object
    Dim wdFileName

    Set objWord = CreateObject("word.Application")
    wdFileName = Application.GetOpenFilename("Word Documents, *.doc*")

    If wdFileName = False Then Exit Sub

    Set objDoc = GetObject(wdFileName)

    objWord.Documents.Open (wdFileName)
    objWord.Selection.WholeStory
    objWord.Selection.Copy

    ActiveWorkbook.Worksheets("H Import").Select
    ActiveWorkbook.Worksheets("H Import").Range("A1").Select
    ActiveWorkbook.ActiveSheet.Paste

    objDoc.Close SaveChanges:=wdDoNotSaveChanges
    objWord.Quit

End Sub

要帮助调试,请在完成调试后检查选择了哪个工作表。检查完成后选择了哪些单元格。这个宏也应该保存excel电子表格吗?很好的提示,谢谢。不应将其保存在此宏中,保存将内置于较大过程中每个宏的返回中。为了帮助您进行调试,请检查完成后选择了哪个工作表。检查完成后选择了哪些单元格。这个宏也应该保存excel电子表格吗?很好的提示,谢谢。它不应该保存在这个宏中,保存是建立在更大过程中每个宏的返回中的。非常感谢YowE3K!好建议。这是我第一次尝试使用不同的应用程序,显然我需要记住这一课。这对您的添加非常有效。非常感谢!是否可以在不选择
范围(“A1”)
的情况下粘贴它?像这样
工作簿。打开(“C:\Users\dell\Desktop\LATAM.xlsx”)。工作表(“Sheet1”)。范围(“A1”)。粘贴
。请确认一下,非常感谢你!好建议。这是我第一次尝试使用不同的应用程序,显然我需要记住这一课。这对您的添加非常有效。非常感谢!是否可以在不选择
范围(“A1”)
的情况下粘贴它?像这样
工作簿。打开(“C:\Users\dell\Desktop\LATAM.xlsx”)。工作表(“Sheet1”)。范围(“A1”)。粘贴
。请确认一下