すいません、、、
教えてください。><
VBAにてVlookupで別ブックにある値を貼り付けし、
それを最終行まで処理を行いたいと思っております。
別ブックから参照するまでは出来たのですが、
繰り返し処理に関してうまく起動せず困っております。
お手数おかけしてますが、
お力をお貸し頂けると幸いです。
宜しくお願い致します。
VBA
1Option Explicit 2 3 4Sub オートフィルとVlookUp() 5 6 Dim x As String 7 8 Dim ex As New Excel.Application 9 10 Dim sPath As String 11 12 Dim wb As Workbook 13 14 Dim i As Integer 15 16 ' ループ処理する 17 18 For i = 0 To Cells(Rows.Count, 1).End(xlUp).Row 19 20 '値を取得 21 22 x = Range("Q" & i + Cells(Rows.Count, 1).End(xlUp).Row).Formula 23 24 25 '開くブックを指定 26 27 sPath = "C:\Users\ファイル名.csv" 28 29 30 31 '読み取り専用で開く 32 33 Set wb = ex.Workbooks.Open(Filename:=sPath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True) 34 35 36 With ActiveSheet 37 38 '(1列目)の値を表示 39 40 Range("A" & i + Cells(Rows.Count, 1).End(xlUp).Row).Formula = Application.WorksheetFunction.VLookup(x, wb.Worksheets("シート名").Range("A:E"), 5, False) 41 42 End With 43 44 45 Next 46 47End Sub
i=0だとエラーが出ませんか?
>繰り返し処理に関してうまく起動せず困っております。
何が起動しないのか追記された方が宜しいかと思います。
また、出来ることであれば、F8で(デバック→ステップイン)行単位の実行を行い、どの行が不良なのかフォローされた方が良いかと思います。
ご返信ありがとうございます。
エラーになりました。
値を1に変更した所、A2(空白セルの始まり)は転機出来たのですが、
繰り返し処理が出来ない状況となっております。。。
何か解決方法ございますでしょうか、、、
ご教示頂けますと幸いです。
>繰り返し処理に関してうまく起動せず困っております。
何が起動しないのか追記された方が宜しいかと思います。
また、出来ることであれば、F8で(デバック→ステップイン)行単位の実行を行い、どの行が不良なのかフォローされた方が良いかと思います。
tosiさん
ご返信ありがとうございます。
VBAの実行時エラーが表示されます。
1004のエラーが出ており、
worksheetfunctionクラスのVlookupプロパティを取得できません。
と表示されます。
Range("A" & i + Cells(Rows.Count, 1).End(xlUp).Row).Formula = Application.WorksheetFunction.VLookup(x, wb.Worksheets("report1594796415383").Range("A:E"), 5, False)
こちらの箇所で上記エラーが表示されます。
ご指摘ありがとうございます。
エラーは1つだけでは無いような気がします。
VLookup(x, のXですが、Rangeを指定する場所ですが、・・・.Row).Formulaを当てています。
Range("A" & i ・・・はWith ActiveSheetの中にありますが、.Rangeとはなっていません。
Set wb = ex.Workbooks.Open後にRange("A" & i が動いていいるため、ActiveSheetはOpenしたwbブックのシートになっている可能性あります。
エラー部分を個別に分けて、どの部分が問題なのか確認が必要と思います。
分解方法
dim MyTest as range '定義します。
1.Range("A" & i + Cells(Rows.Count, 1).End(xlUp).Row).Formula=”=0”
2.set MyTest = wb.Worksheets("report1594796415383").Range("A:E")
3.Range("A1").Formula = Application.WorksheetFunction.VLookup(Range("A1"),Range("A:E"), 5, False)
分解した各行でエラーはでませんか。
先ずは、こちらを通されてから、再度まとめて行います。
この先でのエラーはセル/シートを全然別のところから引いていることが多いです。
別ブックの起動を行い処理していますので、発行するコマンドが適切なシートに対して行っているのか確認する様になるかと思います。
(尚、エラー行の記述の仕方は私的には複雑な記載方法をしているな~と感じています。)
回答1件
あなたの回答
tips
プレビュー