vba初心者です。別book参照のvlookupを使用しているのですが、うまくできません。

Visual Basic | Excel169閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

ありがとうございます。ご指示通りやりましたが、 Cells(i + 7, "J").Value = WorksheetFunction.VLookup(sn, Rng1, 6, False) のところで、unable to get the VLookup property of the WorksheetFunction classと出てしまいます。。。

ThanksImg質問者からのお礼コメント

何度も回答して頂きありがとうございます。結局VLOOKUPは諦めましたが。。

お礼日時:9/26 17:51

その他の回答(2件)

0

貴殿のプログラムは難しく、理解できないので無視します。 CSV なら、文字コードが解れば開かなくてもできますが、文字コードが解らないので見送ります。 CurrentDirectory、私は使い方か判らないし、サーバを使っていないようなので、ChDir にしました。 訳が解らなくなるので、多重括弧は使わない方がいいです。私は個人的に使用禁止にしています。 Option Explicit ' Sub Macro1()     Dim WorkData As String     Dim LastDate As Date     Dim FileName As String     Dim Area As Range     Dim RInp As Long     Dim What As String '     ChDrive "D"     ChDir "\データ"     WorkData = Dir("*.csv")     Application.ScreenUpdating = False '     Do While WorkData > "" '         If LastDate < FileDateTime(WorkData) Then             FileName = WorkData             LastDate = FileDateTime(WorkData)         End If         WorkData = Dir     Loop     Workbooks.Open FileName     Set Area = ActiveSheet.[A:F]     ThisWorkbook.Activate '     For RInp = 7 To Cells(Rows.Count, "H").End(xlUp).Row         What = Cells(RInp, "H")         WorkData = ""         On Error Resume Next         WorkData = WorksheetFunction.VLookup(What, Area, 6, 0)         On Error GoTo 0         Cells(RInp, "J") = WorkData     Next RInp     Workbooks(FileName).Close False End Sub

0

ざっと読んで気がついたところだけ触れます。検証はしていません。 >Workbooks(fname).Activate fnameはThisWorkbookの名前なので、ThisWorkBook.Activeと同じ状態になります。そしてThisWorkbookのActiveになっているシートがActivesheetになります。 >Workbooks(MaxFileName).Worksheets(MaxSheetName).Range(Cells(2, 1), Cells(x, 32)), 6, False) Cells(2,1), Cells(x,32) このようにそのセルがどのシートに属するかを明示しない場合、コンパイラーはそのセルがActivesheetに属するセルだと判断します。 つまり、Workbooks(MaxFileName).Worksheets(MaxSheetName) ここまでは別のシートを参照しているのに、Cells(2,1), Cells(x,32)は ThisWorkbookのシートのセル範囲を参照するという矛盾が生じています。これがエラーの原因だと思われます。