- ベストアンサー
VBAにてシートを別のファイルに追加する方法
多分全部を検索すると答えがあるのでしょうが、少々急いでおりますので新たに質問をさせていただきます。やりたい事は以下のものです 1.編集するVABはファイルaaa.xlsのものです 2.aaa.xlsに”マスタ”というシートがあります 3.ファイルzzz.xlsにこの”マスタ”シートを追加します 4.追加後、aaa.xlsでの編集作業を続けます(zzz.xlsでの作業はありません) 以上です。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#3-4です。 逐条解説すると、 Sub TEST02() Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "zzz.xls") 'Path取得してzzzを開き、以後これをwbと呼ぶ ThisWorkbook.Sheets("マスタ").Copy Before:=wb.Sheets(1) 'Sheets("マスタ")をコピーしてwbの一番前に挿入 wb.Close (True) 'wbを保存終了 Set wb = Nothing 'zzzをwbと呼ぶのをやめる End Sub ということですから、zzz.xlsにもともとあったシートが無くなったり、シート名がコピー元のファイル名と同じになるなんてことは、このコードでは起こらないはずですが・・・・。
その他の回答 (4)
- merlionXX
- ベストアンサー率48% (1930/4007)
#3です。 冗長なコードを書いてしまいました。以下のようにすっきりできますね。 Sub TEST02() Set wb = Workbooks.Open("zzz.xls") ThisWorkbook.Sheets("マスタ").Copy Before:=wb.Sheets(1) wb.Close (True) Set wb = Nothing End Sub
補足
う~ん・・・もうちょっとです。 上記ソースだと既存のファイルを上書き保存してしまうようでzzz.xlsにもともとあったシートも無くなってしまいます。またシート名も”マスタ”ではなくファイル名と同じになってしまいました。
- merlionXX
- ベストアンサー率48% (1930/4007)
ふたつのファイルが同じフォルダにあるなら、 Sub TEST01() Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "zzz.xls") ThisWorkbook.Sheets("マスタ").Copy Before:=Workbooks("zzz.xls").Worksheets(1) wb.Close (True) Set wb = Nothing End Sub でどうでしょう。
- pkh4989
- ベストアンサー率62% (162/260)
aaa.xls とzzz.xls を開いて以下のモジュールを実行してみてください。 sub SheetCopy Workbooks("aaa").Sheets("マスタ").Copy Before:=Workbooks("zzz.xls").Worksheets(1) end sub
お礼
ご回答ありがとうございます。 xxx.xlsを開かないとこの処理を行うのは難しいでしょうか? ソースの上だけでファイルを開いてシートを追加するという 事は無理でしょうか?
- fly_moon
- ベストアンサー率20% (213/1046)
まず、aaa.xlsを開き、ツール→マクロ→新しいマクロの記録を選んで1~4の作業をした後、マクロの記録を終了させて下さい。
お礼
早速のご回答ありがとうございます。 やってみましたが、マクロ中でzzz.xlsを開こうとするとテキストファイルウィザードが動いてしまいます。開こうとするファイルがエクセルで作られたものでもこれが動いてしまうのでしょうか?
お礼
何度もすいません。 wb.Close (True)を実行した後に「ファイル名をつけて保存」のウインドウが表示されます。またこの時に「ファイルの種類」は「テキスト(タブ区切り)(*.txt)」となっています。 ここで上書きされてしまうことになっちゃってるようです。 aaa.xlsとzzz.xlsは同じフォルダに存在しています。
補足
すいません!出来ました!!! zzz.xlsを作る際にファイルの形式を誤っていたようです。 お騒がせしました。 ありがとうございます。