質問: True MsgBox ("完了") End Sub ``` ![1JAN付マスター](https://teratail.storage.googleapis.com/uploads/contributed_images/46e85ef9b4061102178adb6bf13681f2.jpeg) ![2商品Master](https://teratail.storage.googleapis.com/uploads/contributed_images/8a355799e31750e7e33bce72109c35fd.jpeg)
回答: 私の読解力が足りないせいなのか、判断がしづらいです。 一つのエクセルファイル 内で収まる範囲としているのですか? それとも ExcelBook1.xls, ExcelBook2.xls, Master.xls があり、 Master.xls が大本のデータベース みたいな状態で ExcelBook1.xls, ExcelBOok2.xls を読み込んで ストアするっていうことでしょうか? 関係性があいまいすぎてイメージできません。 返信読みました。 追記です。: つまり、JAN付きデータ一覧 ( 本店が記録したデータ群、取り扱える商品一覧。 ) が入っている エクセルファイル ( ここでは JanStock.xls としておきます。 ) のシート1 を 各支店がチェックして在庫をチェックするための エクセルファイル ( ここでは Master.xls とします。 ) が読み取って、追加なり削除なり処理をする... という感じでしょうか? もしそうなら、 ファイルの読み込み をするよりも、ActiveWorkbook... を使わずに Workbooks( ブック名 ) を使ってみては? たとえば、 Master.xls の 標準モジュールか UserFormのモジュールかに書くとします。 ``` Dim data As String data = Workbooks( "JanStock.xls" ).Range("A1").Value ``` のようにします。 ですが、これだと For文ではできません。 (できることはできるが、数値を文字列に変換しないといけない... ) ここで Rangeの代わりに Cells を使います。 Cells( 行番号, 列番号 ) という感じになります。 ``` Dim data As String ' "C1" のデータを取得 ' A=>1, B=>2, ... のため。 data = Cells( 3, 1 ).Value ``` これでアクセスすれば For文でも使えます。 例: ``` Dim i As Long ' 1の列のセルで A1からA100 までの一列 に "OK" を印字する For i = 1 To 100 Cells(i, 1).Value = "OK" Next i ``` みたいにできます。 上記のものを組み合わせて WorkBooks(ブック名).Shees(シート番号).Cells(行,列).Value みたいにすれば別のブックのシートを操作することができますよ。 あと、Sheets( シート番号 ) でアクセスする場合は 数字で指定できます。 これとFor文を使って セルをチェックしていけばいいと思います。 使っていないJANデータってありますが、これってアドレスを新規登録するときに サーバのデータベースに同じデータがある場合は使えない, ない場合はOKみたいな感じですよね? それなら、上記のチェックで チェックすればいいのでは? あるいは 考えるためのシート ( 一覧データ と 使っているデータから 割り出す みたいな。 ) とかを一時追加するっていう手もありますね。