• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データファイルを開かずにコピー、別ファイルに転記)

データファイルを開かずにコピー、別ファイルに転記する方法

このQ&Aのポイント
  • データファイルを開かずに、指定した番号のデータをコピーして別ファイルに転記する方法を教えてください。
  • ユーザーフォームを使用して、指定した番号を検索し、データファイルから行ごとにデータをコピーして別ファイルに貼り付ける方法を教えてください。
  • データファイルを開かずに、該当する番号のデータを抽出し、別ファイルに転記する方法を教えてください。

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

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

スミマセン,なんだかあちこち書き間違えてました。 private sub CommandButton1_Click()  dim Target as range  application.screenupdating = false  workbooks.open filename:="c:\test\データファイル.xls"  set target = workbooks("データファイル.xls").worksheets(1).range("A:A").find(what:=me.textbox1, lookin:=xlvalues, lookat:=xlwhole)  if target is nothing then   workbooks("データファイル.xls").close false   application.screenupdating = true   msgbox "not found"   exit sub  end if  target.entirerow.copy destination:=thisworkbook.worksheets("Sheet2").range("A1")  workbooks("データファイル.xls").close false  application.screenupdating = true end sub 大変失礼しました。

rikaina1110
質問者

お礼

できました!!! 速度も速いです! 丸々書いて頂いた上に、最後までご確認頂いて、本当に本当にありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

ん? おっとスミマセン,単純な誤記してましたね まちがい workseets 正解: worksheets 失礼しました。

rikaina1110
質問者

お礼

自分で発見できずすみません、、^^; ただ、hを入れてもまだ同じエラーが出てしまいました・・・ 変わらず「target =」のところが反転してます。。 私ももう一回コードを見てみます!

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

マクロの基本的な理解として,「ブックを開かずにコピーしてくる」方法はありません。 ブックを開かず処理するためは,ワークシート上で数式を使用して該当ブックの値を検索や参照します。 繰り返すと,できることは次のどちらかです。 1.諦めてブックを開いてコピーしてくる 2.ブックを開きたくないので,数式を工夫して少しでも高速化する ケース1) 「開かずに」開いてコピーして閉じる。 private sub CommandButton1_Click()  dim Target as long  application.screenupdating = false  workbooks.open filename:="c:\test\データファイル.xls"  set target = workbooks("データファイル.xls").workseets(1).range("A:A").find(what:=me.textbox1, lookin:=xlvalues, lookat:=xlwhole)  if target is nothing then   workbooks("データファイル.xls").close false   application.screenupdating = true   msgbox "not found"   exit sub  end if  target.entirerow.copy destinaton:=thisworkbook.worksheets("Sheet2").range("A1")  workbooks("データファイル.xls").close false  application.screenupdating = true end sub ケース2) 事前にシート2のB1セルに =MATCH(A1,'c:\test\[データファイル.xls]Sheet1'!A:A,0) と数式を準備しておく A2セルに =INDEX('c:\test\[データファイル.xls]Sheet1'!A:A,$B$1) と数式を準備して右に必要な列範囲までコピーしておく private sub commandbutton1_Click()  worksheets("Sheet2").range("A1") = me.textbox1 end sub シート2は,たとえばシート自体を非表示にしておく。

rikaina1110
質問者

お礼

続けてのご解答ありがとうございます! ファイル名、ファイル場所等を書き換えて早速やってみたのですが、 「コンパイルエラー:オブジェクトが必要です」というエラーになります。 書き換え時にファイル名を間違えたり、場所の指定を間違えたかな?と 思って確認したんですがわからず・・・ エラー時は、コードの 「private sub CommandButton1_Click()」が黄色くマーカーされ 「Set target」のところが青く反転されます(選択された状態になります)

rikaina1110
質問者

補足

すみません、お礼の内容ですが、 ケース1)のコードでやってみた結果です。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう