• ベストアンサー

開いていない他のブックからシートを取り込むにはどうしたらよいか?

はじめましてVB初心者で習得に向けて頑張っている者です。 助けていただきたいのはExcelVBAでの問題です。 下記のような処理をおこないたいたくStep2以降は出来上がったのですが、Step1でつまづいています。 ご助言ください。 開いているブック”A"と閉じているブック"B"があり、”A"に記載したコマンドボタンをクリックした際の挙動。 前提1:"A"・"B"ともにDドライブの直下に保存してある。 前提2:"B"に含まれる移動したいシート名は"あ"で一意になっている。 Step1."B"に含まれるシート”あ”を”A"に取り込む step2.”あ”を加工して求める形に整形する 本当に困っています。何か不足する情報があればおっしゃってください。 ご助力お願いします。

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

  • ベストアンサー
回答No.4

>逆に、マクロの記載されたブック(主)から他のブック(従)のシートを受け取る方法がわかりません。 主から従を呼び出し、従のシートを主へコピーするマクロを 主に作成すれば良いかと思います。 方法は大体記されていますね。 従のブックを取得します。 従のシートを主のブックへコピーします。 従のブックを閉じます。 Dim wb As Workbook Dim wb2 As Workbook Set wb = Application.ActiveWorkbook Set wb2 = Application.Workbooks.Open("C:\Documents and Settings\Administrator\デスクトップ\B.xls", ReadOnly:=True) wb2.Sheets("あ").Copy after:=wb.Worksheets(3) Set wb = Nothing wb2.Close SaveChanges:=False Set wb2 = Nothing 適当な例なので、いじってみて理解して下さい^^

noname#250015
質問者

補足

>主から従を呼び出し、従のシートを主へコピーするマクロを >主に作成すれば良いかと思います。 まさにその通りでした!ばっちり動きました。 皆さん、つたない情報から答えを導いていただきありがとうございました。 まだ、他にも書かなきゃならないVBAがありますので質問をさせていただくことがあるかと思いますのでよろしくお願いします。

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

その他の回答 (4)

  • sr_mom
  • ベストアンサー率37% (3/8)
回答No.5

No.2です。 置き換えている内容も問題ないようにおもわれるのですが。。。 何かエラーメッセージが出ますでしょうか?

noname#250015
質問者

補足

(1)、(2)の書き方がわからなかったのです・・・ ご親切をいただきありがとうございました。 おかげさまでばっちりうまくいきました!!

すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>、"A"から"B"へコピーすることは出来るのですが、"A"から"B"へ取りに行くというのが作れません。 「取りに行く」というのが、よくわかりませんが・・・。 コピーではなくて、値を取得したいのでしょうか?

noname#250015
質問者

補足

すみません、VBの用語にも不慣れなもので表現が適切でないのだと思います。 マクロの記載されたブック(主)から別のブック(従)へシートをコピーする方法は理解しています。 ※主から従へのコピー 逆に、マクロの記載されたブック(主)から他のブック(従)のシートを受け取る方法がわかりません。 ※従から主へのコピー なお、従となるブックは日々再作成されるファイルなのでマクロを置くことは出来ません。

すると、全ての回答が全文表示されます。
  • sr_mom
  • ベストアンサー率37% (3/8)
回答No.2

こんにちは。 Workbooks(2).Worksheets(1).Copy after:=Workbooks(1).Worksheets(1) →2番目に開いたブックのシート1を1番目に開いたブックのシート1の後にコピーする では、うまく行きませんでしょうか?

noname#250015
質問者

補足

ご回答ありがとうございます。 まず、前処理として、 Sub BookOpen_1() ChDir "D:" Workbooks.Open Filename:="B.xls" End Sub としてBをオープンしました。 その後、 Workbooks("B.xls").Worksheets("あ").Copy after:=Workbooks("A.xls").Worksheets("あ") としましたがだめでした(>_<) (2)・(1)は実際のブック名とシート名に置き換えるのでしょうか?

すると、全ての回答が全文表示されます。
noname#123709
noname#123709
回答No.1

Bのシート「あ」を取り込むというイメージが良く分かりませんが・・。 コピーしたいのでしょうか? 開かないと無理です。開いて処理してから閉じればいいだけだと思いますがねぇ。 どうして開かずなのでしょうか?画面の表示を制御すれば開いたかどうかも ユーザーには分からないと思いますが。

noname#250015
質問者

補足

早々の回答ありがとうございます。 1."B"を開く 2."あ"をコピーする 3."B"を閉じる この動きは考えたのですが、"A"に記載したマクロから"B"のシートを取る方法がわからないのです。 私の持つ知識だと、"A"から"B"へコピーすることは出来るのですが、"A"から"B"へ取りに行くというのが作れません。 "B"にマクロを埋め込むのは避けたいのです。

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

関連するQ&A