错误从多个excel工作簿中提取关键信息

时间:2016-08-01 16:28:23

标签: excel vba excel-vba while-loop

我正在尝试在工作簿中编写一个宏,其目的是显示每组excel文件中的密钥信息。第一列包含将在代码中使用的文件的名称。

我到目前为止编写的代码应循环遍历摘要表中的11个文件名列表,并从每个文件中的单元格E21中提取信息,并将其放在摘要表中的单元格Hx中。

到目前为止,我没有运气,我的第一个错误就是#34;无效的资格赛"在线上说" MySheet"。我知道这里有很多其他的错误,因为我从来没有尝试过从其他封闭的工作簿中提取的子文章。

我的代码如下:

Option Explicit

Sub OEEsummmary()
Dim Gcell As Range
Dim Txt$, MyPath$, MyWB$, MySheet$
Dim myValue As Integer

    Dim x As Long
    Dim v As Variant, r As Range, rWhere As Range

MyPath = "L:\Manufacturing Engineering\Samuel Hatcher\"
x = 2

MySheet = ActiveSheet.Name

Application.ScreenUpdating = False

Do While MySheet.Range("A" & x).Value <> ""

    MyWB = MySheet.Range("A" & x).Txt
    Workbooks.Open Filename:=MyPath & MyWB

    Set Gcell = ActiveSheet.Range("E21")
        With ThisWorkbook.ActiveSheet.Range("A" & x)
        .Value = "Item"
        .Offset(7, 0).Value = Gcell.Value

        End With
    ActiveWorkbook.Close savechanges:=False

    x = x + 1

Loop

End Sub

我看过无效的限定符错误是什么,我不明白我的代码部分有什么问题。任何有关这个和任何其他致盲错误的帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我发现导致Invalid Qualifier错误的问题是您将MySheet声明为字符串,但尝试将其用作Worksheet对象。下面我已将其声明为工作表并将其设置为Activesheet。我还将ThisWorkbook.ActiveSheet引用更改为MySheet,我认为这是您想要的。还将Txt更改为Text

Sub OEEsummmary()
Dim Gcell As Range
Dim MySheet As Worksheet
Dim Txt$, MyPath$, MyWB$
Dim myValue As Integer
Dim x As Long
Dim v As Variant, r As Range, rWhere As Range

MyPath = "L:\Manufacturing Engineering\Samuel Hatcher\"
x = 2
Set MySheet = ActiveSheet

Application.ScreenUpdating = False

Do While MySheet.Range("A" & x).Value <> ""
    MyWB = MySheet.Range("A" & x).Text
    Workbooks.Open Filename:=MyPath & MyWB
    Set Gcell = ActiveSheet.Range("E21")
        With MySheet.Range("A" & x)
            .Value = "Item"
            .Offset(7, 0).Value = Gcell.Value
        End With
    ActiveWorkbook.Close savechanges:=False
    x = x + 1
Loop

End Sub