- ベストアンサー
エクセルのシート読み込み
Excel2000を使用してます。 前回質問したのですが解決できなかったので再度質問します。 ExcelFile A とExcelFile Bがあります。 まずAを開きBを別シートで読み込みを行ないたいのですが どのようにすればいいのでしょうか? ExcelFile A はタブ1とタブ2の二つのシートに分かれています。 ExcelFile Bはタブが一つでこのタブを丸ごとExcelFile Aのタブ3 として挿入を行いたいだけです。 イメージしているのはExcelFile Aの一枚目のシートに ExcelFile B挿入ボタンを設置してこのボタンを押すだけでExcelFile Bがシート三枚目に入ってくるといった感じです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
マクロはA.xlsに書いてありますか? Bを開くコードをこれにして見てください。 Workbooks.Open Filename:=Workbooks("A.xls").Path & "\B.xls" また、Bのブック自体を変更するわけではありませんので、Bはそのまま残ります。またマクロはワークシートオブジェクトに書いてあるマクロに付いてはシートと一緒に付いてきます。
その他の回答 (6)
- mt2008
- ベストアンサー率52% (885/1701)
> こんな感じになりますけど駄目でした。 何がどう駄目だったのですか?これでは判りません。 B.xlsに入っていると言うマクロはOpen時に何か処理をして終了してしまうマクロだったりはしませんか?
補足
毎度すいません。 エラーの内容は 実行時エラー'1004' B.xlsが見つかりません。ファイル名及び保存場所が正しいかどうか 確認してください。 デバックで見てみるとファイルオープンの行で黄色になっています。 AとBは同じ場所にあります。 また、Bのマクロは実行後に終了してしまうものでもありません。 気になるのがBのシートを持ってこれたとしてBのブックに記録している マクロがなくなってしまうのでしょうか?
- mt2008
- ベストアンサー率52% (885/1701)
No.2です。 > ExcelFileAと同じ場所にExcelFileBがあれば > 呼び込み出来るようにする場合パスの指定方法はどうしたら良いのでしょうか? ExcelFileAとExcelFileBが同じパスにあるのでしたら、Workbooks.Open の時にパスの指定はいりません。ExcelFileBのファイル名だけで開けます。 開く前にExcelFileBが存在するかどうか調べたいのでしたらDirで調べます。 こんなものでよろしいですかね?
補足
有難うございます。 こんな感じになりますけど駄目でした。 何が原因なのでしょうか? Sub B読み込み() Workbooks.Open Filename:="B.xls" Sheets("B").Select Sheets("B").Move After:=Workbooks("A.xls").Sheets(7) ActiveWindow.WindowState = xlMaximized End Sub ExcelFileBのシート名はファイル名と同じです。 ExcelFileAのシートは7個存在しています。 AとBは同じ場所にあります。 また、AとBはそれぞれ別のマクロが記録されています。 しつこくてごめんなさい(汗)
- hige_082
- ベストアンサー率50% (379/747)
ExcelFile A とExcelFile Bは必ず同じフォルダにあるのが条件 Workbooks.Open Filename:=Workbooks("ExcelFile A").Path & "BookB.xls" 下記を実行して、セルを右クリック Sub test_1() With Application.CommandBars("Cell").Controls.Add() .Caption = "テストテスト" .OnAction = "test_2" End With End Sub SUB test_2 msgbox "テストテスト" END SUB 後はHELPを参照してください
お礼
ありがとうございました。 参考になりました。
- mt2008
- ベストアンサー率52% (885/1701)
No.2です > ExcelFileA とExcelFileBは実際のファイル名に変更すればいいのですよね。(今やってみたら駄目だったので・・・) > また、ExcelFileBの場所はExcelFileAと同じ場所ではないと駄目なのですよね。 ファイル名やパスは変更してください 例:Workbooks.Open Filename:="D:\hoge\BookB.xls" > もう一つ、これをボタンに設定したいのですがどうしたらいいのですかね。 この辺を参考にしてください http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_130_02.html
補足
有難うございました。 何とかできそうです。最後にもう一ついいですか? ExcelFileAの実行場所は毎回違う場所になっている為、 パスを予め設定できません。 ExcelFileAと同じ場所にExcelFileBがあれば 呼び込み出来るようにする場合パスの指定方法はどうしたら良いのでしょうか? 何度も申し訳ありません。
- mt2008
- ベストアンサー率52% (885/1701)
こんな感じですかね。 ファイルAに以下のマクロを入れて動かして見てください。 Sub Sample() Workbooks.Open Filename:="ExcelFileB.xls" Sheets(1).Select Sheets(1).Move After:=Workbooks("ExcelFileA.xls").Sheets(Workbooks("ExcelFileA.xls").Sheets.Count) End Sub Bを開いて、シートの移動でAのシート末尾に移動 と言うことをやっています。
補足
有難うございます。 ExcelFileA とExcelFileBは実際のファイル名に変更すればいいのですよね。(今やってみたら駄目だったので・・・) また、ExcelFileBの場所はExcelFileAと同じ場所ではないと駄目なのですよね。 もう一つ、これをボタンに設定したいのですがどうしたらいいのですかね。
- inu_saru
- ベストアンサー率50% (4/8)
シートのコピーじゃまずいんでしょうか? そのファイルAとBを合体させて一つのファイルC(仮)にして そのファイルCにはAとBのシート、つまり3シートがある。 そういう状態ではまずいんでしょうか? 任意の瞬間に挿入ボタンを押して挿入したいのですか?
補足
有難うございます。 "任意の瞬間に挿入ボタンを押して挿入したいのですか?" その通りです。
お礼
ありがとうございました。 凄いですね。出来ましたよ。 今までお付き合いしてもらってありがとうございます。