命令不可用,因为没有打开的文档

时间:2019-09-13 08:02:33

标签: excel vba ms-word

我正在尝试使用宏从excel的某些word文档中的表中导入一些数据,但是当要打开word文档并从excel宏中读取它时,我无能为力,因为它说我没有打开的文档,但是我有。

如果我打开一个单用其名称命名的文档,那没关系,但是问题出在我通过搜索和循环打开文件时。

Sub LoopFile()

    Dim MyFile, MyPath As String
    Dim wrdApp, wrdDoc
    MyPath = "here goes my path with personal info, it points to a folder"
    MyFile = Dir(MyPath)
    Set wrdApp = CreateObject("Word.Application")
    Do While MyFile <> ""

'parameters for the files to search

        If MyFile Like "*.docx" And MyFile Like "All*" Then
            wrdApp.Visible = True
            Set wrdDoc = wrdApp.Documents.Open(MyPath & MyFile)
            Call GetID
            wrdApp.Close
        End If
        MyFile = Dir
    Loop
End Sub


Sub GetId()

    Dim cicli, y As Integer
    'counter for iterations
    cicli = cicli + 1
    'if it's first iteration it starts from column E, otherwise the next one
    If (cicli = 1) Then
        y = 5
    Else
        y = y + 1
    End If

    ActiveDocument.Tables(1).Cell(Row:=1, Column:=2).Range.Copy
    ThisWorkbook.Worksheets("Foglio1").Cells(23, y).PasteSpecial xlPasteValues


End Sub

问题到来了

ActiveDocument.Tables(1).Cell(Row:=1, Column:=2).Range.Copy

我该如何解决? 谢谢

1 个答案:

答案 0 :(得分:1)

传递您要引用的文档,并避免使用ActiveDocument。例如,尝试以如下方式修复它:

Set wrdDoc = wrdApp.Documents.Open(MyPath & MyFile)
GetID wrdDoc

然后稍微更改GetId Sub,接受wrdDoc参数。

Sub GetId(wrdDoc as Object)

    Dim cicli, y As Integer
    'counter for iterations
    cicli = cicli + 1
    If (cicli = 1) Then
        y = 5
    Else
        y = y + 1
    End If

    wrdDoc.Tables(1).Cell(Row:=1, Column:=2).Range.Copy
    ThisWorkbook.Worksheets("Foglio1").Cells(23, y).PasteSpecial xlPasteValues

End Sub

How to avoid using Select in Excel VBA