- ベストアンサー
Excel VBAで違うファイルを参照する方法
- Excel VBAを使用して、ネットワーク上の別のファイルを参照する方法について教えてください。
- 具体的には、アクティブなシートの特定のセルに入力された値と、ネットワーク上のExcelファイル内のセルの値を比較し、一致する場合には「○」、一致しない場合には「×」を返したいです。
- また、セル番地やシート名を指定せずに、ファイル内を指定して比較したいです。具体的なロジックの書き方がわからないので、教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#01です。補足拝見しました。#02回答の For Each sht In Worksheets から Next sht までを以下に置き換えると、「外部」と「仕様」が異なるシートに存在しても"○"と判定します。今度は部分一致で判定させています。 Set res1 = Nothing Set res2 = Nothing For Each sht In Worksheets If res1 Is Nothing Then Set res1 = sht.Cells.Find(wkVal1, lookat:=xlPart) End If If res2 Is Nothing Then Set res2 = sht.Cells.Find(wkVal2, lookat:=xlPart) End If Next sht
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
#01です。とりあえずReference.xlsのいずれかの同一シートにB1,B2の両方の値が存在する場合に"○"と判定するマクロにしてみました。 Sub Macro9() Dim actSht, sht As Worksheet Dim wkVal1, wkVal2, res1, res2 Set actSht = ActiveSheet wkVal1 = ActiveSheet.Range("B1").Value wkVal2 = ActiveSheet.Range("B2").Value Workbooks.Open "\\EXCEL\VBA\MACRO\Reference.xls" For Each sht In Worksheets Set res2 = Nothing Set res1 = sht.Cells.Find(wkVal1, lookat:=xlWhole) ' 部分検索なら xlWhole → xlPart If Not res1 Is Nothing Then Set res2 = sht.Cells.Find(wkVal2, lookat:=xlWhole) If Not res2 Is Nothing Then Exit For End If End If Next sht Workbooks("Reference.xls").Close False actSht.Activate If res1 Is Nothing Or res2 Is Nothing Then MsgBox ("×") 'ActiveSheet.Range("A1") = "×" Else MsgBox ("○") 'ActiveSheet.Range("A1") = "○" End If End Sub
- zap35
- ベストアンサー率44% (1383/3079)
補足要求です >セル番地やシート名まで指定せずに比較したいのです これは \\EXCEL\VBA\MACRO\Reference.xls のいずれかのシートにアクティブシートのB1(外部)とB2(仕様)と一致する文字列があったら"○"という判定をすればよいのですか? 実際にはありえないのかもしれませんが「外部」と「仕様」が別々のシートにあっても良いのでしょうか? また「海外部門」のように部分一致でも"○"ですか
お礼
回答ありがとうございます 補足要求にお答えします \\EXCEL\VBA\MACRO\Reference.xlsのいずれかのシートに「外部」と「仕様」が 別々にあっても構いませんし、一致する文字列があれば"○"という判定で大丈夫です 「海外部門」も"○"です 早速No.2でロジックを作って頂きありがとうございます まずはそのロジックを使って試してみます どうもありがとうございました
お礼
ありがとうございました おかげさまで無事にロジックが作成できました 本当に助かりました 感謝いたします
補足
>zap35さん たびたびありがとうございます 早速試しましたら表示できました ありがとうございます 私の質問に補足をさせて頂きますと "B1"の「外部」には"C1"へ「○か×」を返し、"B2"の「仕様」には"C2"へ「○か×」を 返すような結果にしたいのです そちらも教えて頂けますでしょうか お願い致します