• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ )

エクセルマクロで特定の文字列を探す方法

このQ&Aのポイント
  • エクセルのマクロで特定の文字列を探し、Offsetしたセルの値をコピー&ペーストする方法について教えてください。
  • マクロを作成しているのですが、ファイルは開くことはできるのですが、コピー&ペーストがうまくいきません。
  • 変数やOffsetの使い方に問題があるのかもしれません。正しい方法を教えていただけますか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

多分間違い: Set Obj = Worksheets(Cells(f, 2).Value).Cells.Find(Cells(f, 3).Value) 指摘: Set Obj = どのブックの.Worksheets(どのブックのシートの.Cells(f, 2).Value).Cells.Find(どのブックのシートの.Cells(f, 3).Value) sub macro1()  dim w as workbook  dim h as range  dim target as range  chdrive left(thsworkbook.path, 1)  chdir thisworkbook.path  for each h in thisworkbook.worksheets("シート名").range("A1:A100")   set w = workbooks.open(filename:=h & ".xls", updatelinks:=false)   set target = w.worksheets(h.offset(0, 1)).cells.find(what:=h.offset(0, 2))   if not target is nothing then    target.offset(36,0).value = target.offset(24, 0).value   end if   w.close savechanges:=true  next end sub

paci12451
質問者

お礼

返信ありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

普通で100ファイルもエクセルファイルを開き、毎回検索して・・ 繰り返し関係はどうなのか?何について繰返すのか? 本当にそうなのか? ・検索語が入っているルファイルはいくつ。 ・検索対象ファイ(ブック)ルはいくつ。そのブックの対象シートは? 初心者はコードだけコピペして挙げて、読者に読み解かせて回答までもらうのでなく、したいこと(目的)と背景・用途なども文章で質問文に書いて質問するもんだ。 ーー コードが初心者のため、アイデア的に、とんでもないコードを書いている質問もあった。 この質問文での、ブックーシートーセル(行と列)の点の意識の無さが、このコードにも現れて、動かないのでは。 初心者は対象が1シートの場合で無い場合は、神経質ぐらい、ブックーシートを明示してコードを書いたほうが良い。

paci12451
質問者

お礼

返信ありがとうございます。

  • 11zep
  • ベストアンサー率36% (48/133)
回答No.2

詳細に提示できなくて申し訳ないですがヒントだけ。 FnameをOpenする前とした後に記述されているCellsコレクションは、最初に開いていたファイルを参照したいのですよね? だとしたら後のCellsは、Fnameのセルを参照しています。 この場合は、WorkBook型の変数を用意しそれを使ってアクセスします。 省略してCellsコレクションを使用した場合、アクティブなシートを参照したはずです。 まとはずれだったら無視してください。

paci12451
質問者

お礼

返信ありがとうございます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

ソースをちゃんと読んでは居ませんが…… Cells(f, 2) の様な描き方ですと、その時アクティブなシートのセルが対象になります。 元々のシートのA列からブック名を取り出し、そのブックを開いていますよね。 その次点でアクティブシートは開いたブックの方に移ります。 Set Obj = Worksheets(Cells(f, 2).Value).Cells.Find(Cells(f, 3).Value) で、使われているCells(f, 2).Value、Cells(f, 3).Valueは、開かれたブックのアクティブシートのB列、C列のセルになります。 これは意図した通りでしょうか?

paci12451
質問者

お礼

返信ありがとうございます。

関連するQ&A