簡體   English   中英

外部工作簿VBA上的Vlookup

[英]Vlookup on external workbook VBA

我不知道它怎么不起作用。
我有活躍的工作簿。 我想從活動表中運行宏。
1.我想再添加2個帶有headers的列。 -作品
2.我想打開外部文件,該文件位於vloop中。 -作品
3.我想使用vloop從外部工作簿的活動工作表中找到我的變量,並將結果保存在活動工作表中

Sub ImpFPQ()

    Application.ScreenUpdating = False

    On Error Resume Next

    Dim Imp_Row As Integer
    Dim Imp_Col As Integer
    Dim Baza1 As Workbook
    Dim Baza2 As Workbook
    Dim wksheet As Worksheet
    Dim plik As Variant

    Set wksheet = ActiveWorkbook.ActiveSheet

    'add columns with names

    wksheet.Columns("A:B").Insert Shift:=xlToRight
    wksheet.Columns("A").Cells(1, 1) = "KOD"
    wksheet.Columns("B").Cells(1, 1) = "LICZNIK"

    'open file

    plik = Application.GetOpenFilename(Title:="Wybierz raport")
    If plik = False Then Exit Sub
    Workbooks.Open Filename:=plik

    Set Baza1 = ThisWorkbook 'activesheet
    Set Baza2 = Workbooks(plik) 'external workbook

    Set lastel = Baza2.Range("F3", Range("F3").End(xlDown)).Select

    Set lookFor = Baza1.Cells(2, 4)  'aktualny subsyst do znalezienia
    Set srchRange = Baza2.Sheets(1).Range("A3:lastel")

    Range("A2").Value = Application.VLookup(lookFor, srchRange, 6, False)

    Application.ScreenUpdating = True
    MsgBox "Done!"

End Sub

我有這些列,但行沒有結果。 有人能幫我嗎?

更改此:

If plik = False Then Exit Sub
Workbooks.Open Filename:=plik

Set Baza1 = ThisWorkbook 'activesheet
Set Baza2 = Workbooks(plik) 'external workbook

對此:

If plik = False Then Exit Sub
Set Baza2 = Workbooks.Open(Filename:=plik)

Set Baza1 = ThisWorkbook 'activesheet

因為plik為您提供了完整的文件名(包括路徑),所以我認為它不能用作Workbooks集合的索引

參見此處: https : //msdn.microsoft.com/zh-cn/vba/excel-vba/articles/workbook-object-excel

這應該可以解決問題。

Sub ImpFPQ()

    Application.ScreenUpdating = False

    On Error Resume Next

    Dim Imp_Row As Integer
    Dim Imp_Col As Integer
    Dim Baza1 As Workbook
    Dim Baza2 As Workbook
    Dim wksheet As Worksheet
    Dim plik As Variant
    Dim lastRow As Long
    Dim lookfor As Variant
    Dim srchRange As Range

    Set wksheet = ActiveWorkbook.ActiveSheet

    'add columns with names

    wksheet.Columns("A:B").Insert Shift:=xlToRight
    wksheet.Columns("A").Cells(1, 1) = "KOD"
    wksheet.Columns("B").Cells(1, 1) = "LICZNIK"

    'open file

    plik = Application.GetOpenFilename(Title:="Wybierz raport")
    If plik = False Then Exit Sub
    Workbooks.Open Filename:=plik

    Set Baza1 = ThisWorkbook 'activesheet
    Set Baza2 = Workbooks.Open(plik) 'external workbook

    With Baza2.Sheets(1)
        lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
    End With

    lookfor = Baza1.Cells(2, 4)  'aktualny subsyst do znalezienia
    Set srchRange = Baza2.Sheets(1).Range("A3:F" & lastRow)

    Range("A2").Value = Application.VLookup(lookfor, srchRange, 6, False)

    Application.ScreenUpdating = True
    MsgBox "Done!"

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM