• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA 他のブックを検索し、値を代入する方法)

EXCEL VBA 他のブックを検索し、値を代入する方法

このQ&Aのポイント
  • EXCEL VBAを使用して、他のブックを検索し、値を代入する方法について教えてください。
  • 具体的には、2つのブック間で顧客コードを検索し、一致した場合に作業員コードを顧客マスタの備考フィールドに代入する処理を実装したいと考えています。
  • 何か良い方法やヒントがあれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

ブック2の列位置が分からないのですが、Aからと仮定します。 Sub 処理(ByVal 顧客コード As String, _        ByVal 作業員コード As String) Dim ブック As Workbook Dim シート As WorkSheet Dim 一致 As Range Dim 行 As Long Set ブック = Workbooks.Open("~.xls") Set シート = ブック.WorkSheets(1) Set 一致 = .Columns("A:A").Find(顧客コード) If 一致 Is Nothing Then     MsgBox "そのような顧客はいません" Else     シート.Cells(一致.Row, 4) = 作業員コード     ブック.Save End If ブック.Close End Sub

msn-q
質問者

お礼

ありがとうございます、出来ました! なるほど、Rowを使って行を割り出す訳ですね。勉強になりました。 Set 一致 = .Columns("A:A").Find(顧客コード) の所は.Columnsがうまく動いてくれなかった為変数を用意して回避しました。 助かりました、ありがとうございます!

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

ワークブックをOpenすると、Workbookオブジェクトが返ってくるのでそれを取得します。 Dim targBook As Workbook Set targBook = Application.Workbooks.Open(...) で、このWorkbookオブジェクト内のWorksheetsコレクションから検索対象とするWorksheetを選択し、検索範囲をRangeで取得してそのRangeでFind、というのが検索の流れです。 Dim targSheet As Worksheet Set targSheet = targBook.Worksheets(...) Dim targRange As Range Set targRange = targSheet.Range(...) Dim foundCell As Range Set founcCell = targRange.Find(...) ここまでで対象セルが判明するので、あとはその隣のセルに値を書き込む訳です。

msn-q
質問者

お礼

ありがとうございます、おかげで解決致しました。 >このWorkbookオブジェクト内のWorksheetsコレクションから検索対象とするWorksheetを選択し、検索>範囲をRangeで取得してそのRangeでFind、というのが検索の流れです。 この部分は非常に分かりやすくて頭の中の霞が晴れたようです。 本当にありがとうございました!