
エクセルのVBAでマクロを組み、同じフォルダ内にあるファイルにvlookup関数でリンクを張ろうかと考えています。
ファイルの構成は以下の通りです。
マクロを組んでいるファイル:Book1.xls
マクロが適応されるファイル:Book2.xls
vlookup関数で参照されるファイル:Book3.xls
実際にBook1に組んだマクロは以下の通りです。
Workbooks.Open ThisWorkbook.Path & "\Book2.xls"
Workbooks("Book2.xls").Activate
myFile = ThisWorkbook.Path & "\" & "Book3.xls"
b = 2
Do Until ActiveSheet.Cells(b, 1) = ""
ActiveSheet.Cells(b, 6) = "=VLOOKUP(E" & b & ",myFile!$A:$F,5,0)"
b = b + 1
Loop
上記マクロで実行すると、Book2が開き、vlookup関数が挿入されるところまではいきますが、
変数myFileが正常に変換されないらしく、ファイルが見つからない状態となってしまいます。
myFileの代わりにフルパスでファイルをしていすると正常にマクロは起動することは確認しましたが、
毎回作業するフォルダが変わる為、フルパス指定はできるだけ避けたいです。
基礎的な質問で恐縮ですが、
vlookup関数の引数(参照範囲)を変数で指定する方法を教えてください。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
こんばんは。
数式を入れる時には、ActiveSheet.Cells(b, 6) のような暗黙のプロパティはやめたほうがよいです。以下は、FormulaLocal を使用していますが、通常、Formula だけで、R1C1 方式でも入力可能です。また、変数というなら、変数の宣言の習慣は付けたほうがよいですね。
実際のマクロはエラー処理や開いたブックの場合の二重のオープンの部分を避けるようにはしますが、テスト用として割愛しておきます。
相対参照の数式の場合は、ループは使いません。範囲を選択して、同じ数式を入れればよいです。その場合は、R1C1 方式のほうが便利です。
'標準モジュール
Sub Test2()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim myFile As String
On Error Resume Next
Set wb1 = Workbooks.Open(ThisWorkbook.Path & "\Book2.xls")
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\Book3.xls")
myFile = "[" & wb1.Name & "]Sheet1"
wb1.Activate '本来は、ここが曖昧。Sheet の指定が必要
With Range("A2", Range("A65536").End(xlUp))
If .Count > 1 Then
.Offset(, 5).FormulaLocal = "=VLOOKUP(RC[-1]," & myFile & "!C1:C6,5,0)"
End If
End With
Set wb1 = Nothing: Set wb2 = Nothing
End Sub
No.5
- 回答日時:
VBAとVLOOKUPの組み合わせは余り必要ない。
Findメソッドなどによって検索が行われればすむ。
ーー
VLOOKUP関数の第1引数は、即実行するため使うときは
E" & b & ",
になっているが、Range("E" & b),とでもなるのではないか?
シートの関数の場合はE3と書いても、VBAで使うときはRange("E3")のような書き方が必要と思うが。
ーー
「検索範囲のあるファイル」のセル範囲は、そのアリ場所のブックを変えられるように、考えているようにしているのは良いとして、シートの指定はどうなっているのか。
他ブックを指定したら式を入れるシートであってもシート名を
指定しないといけないのでは。
ーー
また、検索範囲のあるファイルのセル範囲は、
これもRabge(・・・)で指定しないとダメでは。
ーー
今までの経験から、こんなこが問題かと思うが、質問の書き方が荒くて(セルに式の挿入の問題か?こういうのはリンクというのかな?式を挿入したりしないでVBAで処理できるのでは)
式をVBAで埋め込むなら、Ccells(・・).Formula="式”のようになるはず。上記ならValueとして文字列を入れているのでは。
例
Sub test01()
Cells(1, 1).Formula = "=A2+A3"
End Sub
ーー
質問の標題を文字通り受け取ると、
>vlookup関数の引数を変数で指定することはできますか
VLOOKU関数には4つ引数が有る。
第何引数のことかを書かないと質問にならない。
No.3
- 回答日時:
>ご指摘の通り、""(ダブルクォーテーション)で囲むと変数と宣言していても、文字列と判断されてしまいます。
ActiveSheet.Cells(b, 6) = "=VLOOKUP(E" & b & ",myFile!$A:$F,5,0)"
この行しかありませんが
No.2
- 回答日時:
下記のようではだめなのか。
Sub test()
Workbooks.Open ThisWorkbook.Path & "\Book2.xls"
Workbooks.Open ThisWorkbook.Path & "\Book3.xls"
Workbooks("Book2.xls").Activate
myFile = "[Book3.xls]Sheet1"
b = 2
Do Until ActiveSheet.Cells(b, 1) = ""
ActiveSheet.Cells(b, 6) = "=VLOOKUP(E" & b & "," & myFile & "!$A:$F,5,0)"
b = b + 1
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VLookupで参照する範囲を変数で渡したい
Access(アクセス)
-
エクセル関数>参照ファイル名をセルから呼び出す
Excel(エクセル)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
-
4
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
5
VLOOKUP関数で別ファイルを指定するとき、ファイルのパスを変数にしたい
Microsoft ASP
-
6
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
7
callで順に実行されるプロシージャを途中で止める方法
Excel(エクセル)
-
8
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
9
VLOOKUP関数で開いていないファイルを参照
Access(アクセス)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
12
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
13
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
14
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
シート参照で変数を使いたい(EXCEL)
Excel(エクセル)
-
17
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
18
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
19
Excelシート上のマクロを登録したボタンの削除が出来ません
Excel(エクセル)
-
20
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】変数に入れるコード...
-
EXCEL VBA 指定したファイルが...
-
フォルダ内のexcelファイルを順...
-
EXCELマクロを無効にして開く方法
-
フォルダ内のブック全部にパス...
-
エクセルマクロで不特定なファ...
-
【マクロ】名前を保存する際に...
-
ファイルを開かずにマクロを実行
-
accessフォルダを移動したらフ...
-
Accessのaccdbファイルを起動で...
-
Excelファイルがマクロを含むか...
-
ファイルの保存場所を変えたら...
-
エクセル 複数ファイルの一括...
-
データ参照先が別ファイルの場...
-
エクセルのシートの数を数えた...
-
複数のエクセルファイルに対し...
-
VBA EXCELファイル選択⇒指定セ...
-
エクセル(マクロ)のファイル...
-
エクセル 画像リンク
-
VBAでワークブックの名前を変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】変数に入れるコード...
-
【マクロ】EXCELで読込したCSV...
-
EXCEL VBA 指定したファイルが...
-
【マクロ】名前を保存する際に...
-
フォルダ内のexcelファイルを順...
-
エクセルマクロで不特定なファ...
-
【Excel VBA】ファイル名が一...
-
ファイルを開かずにマクロを実行
-
エクセル 複数ファイルの一括...
-
accessフォルダを移動したらフ...
-
ファイルの保存場所を変えたら...
-
データ参照先が別ファイルの場...
-
VBAでワークブックの名前を変数...
-
EXCELマクロを無効にして開く方法
-
フォルダ内のブック全部にパス...
-
エクセル(マクロ)のファイル...
-
エクセルファイルを開く時、関...
-
秀丸:あらかじめ設定した複数...
-
Excelのマクロでファイルを開く...
-
EXCEL VBAで作成した ファイル...
おすすめ情報