• ベストアンサー

VBAにてシートを別のファイルに追加する方法

多分全部を検索すると答えがあるのでしょうが、少々急いでおりますので新たに質問をさせていただきます。やりたい事は以下のものです 1.編集するVABはファイルaaa.xlsのものです 2.aaa.xlsに”マスタ”というシートがあります 3.ファイルzzz.xlsにこの”マスタ”シートを追加します 4.追加後、aaa.xlsでの編集作業を続けます(zzz.xlsでの作業はありません) 以上です。よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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にもともとあったシートが無くなったり、シート名がコピー元のファイル名と同じになるなんてことは、このコードでは起こらないはずですが・・・・。

goo-ts
質問者

お礼

何度もすいません。 wb.Close (True)を実行した後に「ファイル名をつけて保存」のウインドウが表示されます。またこの時に「ファイルの種類」は「テキスト(タブ区切り)(*.txt)」となっています。 ここで上書きされてしまうことになっちゃってるようです。 aaa.xlsとzzz.xlsは同じフォルダに存在しています。

goo-ts
質問者

補足

すいません!出来ました!!! zzz.xlsを作る際にファイルの形式を誤っていたようです。 お騒がせしました。 ありがとうございます。

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

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

#3です。 冗長なコードを書いてしまいました。以下のようにすっきりできますね。 Sub TEST02() Set wb = Workbooks.Open("zzz.xls") ThisWorkbook.Sheets("マスタ").Copy Before:=wb.Sheets(1) wb.Close (True) Set wb = Nothing End Sub

goo-ts
質問者

補足

う~ん・・・もうちょっとです。 上記ソースだと既存のファイルを上書き保存してしまうようでzzz.xlsにもともとあったシートも無くなってしまいます。またシート名も”マスタ”ではなくファイル名と同じになってしまいました。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

ふたつのファイルが同じフォルダにあるなら、 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)
回答No.2

aaa.xls とzzz.xls を開いて以下のモジュールを実行してみてください。 sub SheetCopy Workbooks("aaa").Sheets("マスタ").Copy Before:=Workbooks("zzz.xls").Worksheets(1) end sub

goo-ts
質問者

お礼

ご回答ありがとうございます。 xxx.xlsを開かないとこの処理を行うのは難しいでしょうか? ソースの上だけでファイルを開いてシートを追加するという 事は無理でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

まず、aaa.xlsを開き、ツール→マクロ→新しいマクロの記録を選んで1~4の作業をした後、マクロの記録を終了させて下さい。

goo-ts
質問者

お礼

早速のご回答ありがとうございます。 やってみましたが、マクロ中でzzz.xlsを開こうとするとテキストファイルウィザードが動いてしまいます。開こうとするファイルがエクセルで作られたものでもこれが動いてしまうのでしょうか?

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

関連するQ&A

  • Excelで、大量のファイルをテキストファイルにまとめて変換する方法はありますか?

     大量のExcelファイルを自動的にすべてテキストファイルに変換する方法はありますか? aaa.xls, bbb.xls, ccc.xls, ... zzz.xls         ↓ aaa.txt, bbb.txt, ccc.txt, ... zzz.txt と行った具合にです。  対象となるExcelは複数のワークシートからなりますが、いずれも変換したいシートをアクティブにした状態で保存してあります。 (でも、そうでない場合にも、例えば各ファイルの1枚目のシートを選んでテキスト形式で保存する方法があれば、それも教えていただけるとなお助かります。)  よろしくお願いします。

  • excelマクロ 別ファイルの特定列をコピーしたい

    C:\testの配下にexcelファイル「aaa.xls」「aaa_yyyymmdd.xls」「bbbxls」があります。 「aaa_yyyymmdd.xls」は「aaa.xls」のバックアップファイルです。 又、「bbbxls」にマクロを記述しようと思います。 ☆処理内容☆ 「aaa.xls」「aaa_yyyymmdd.xls」が開いていない状態で、「aaa.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のA列に貼り付け。 「aaa_yyyymmdd.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のB列に貼り付け。 その後、張り付けたA列を正としB列と比較して、差異があった場合はB列の差異があった部分の セルに色つけをした後、「aaa_yyyymmdd.xls」をC:\test:\oldフォルダに移動する。 上記のようなexcelマクロを作成中なのですが、できなくて困っております。 有識者の方、助けを貸してください。 よろしくお願い致します。

  • クリックで配列に追加する方法

    今は、更新ごとにjsファイルの配列を追加しています。 これをhtml側だけの変更で更新させたいです。 画像をクリックすることで、配列を追加させたい場合どのように記述すれば良いでしょうか。 よろしくお願いします。 ーーーーーーーーーーーーーーーー var zzz = [111,222 ];  //ここを追加しなくても良い方法をお願いします。 $.each(zzz,function(i, aaa){ if($.cookie('AAA')=="AAA_DATA"+aaa){ $(function(){ $("a#AAA img").attr("src","images/img_"+aaa+".jpg"); })} $(function(){ $("a#AAA_BTN"+aaa).click(function() { $("a#AAA img").attr("src","images/img_"+aaa+".jpg"); $.cookie("AAA","AAA_DATA"+aaa);}); }) }) ーーーーーーーーーーーーーーーー 【html】 <a id="AAA" 配列に追加させたい任意の数字?> <img="XXX.jpg"></a> <a id="AAA" 配列に追加させたい任意の数字?> <img="XXX.jpg"></a> <a id="AAA" 配列に追加させたい任意の数字?> <img="XXX.jpg"></a>

  • EXCEL VBAで別ファイル作成

    エクセル97です。 エクセルファイル AAA.xls のすべてのワークシートのうち、セルA1に TRUE がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなVBAを書けばよいかご教示ください。 (AAA.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)

  • エクセルにおいて、行ごとに別ファイルを作成

    エクセル AAA.xls の、シート aaa のデータが851行まであります。 (1行目は名前や列名などのデータです) このデータを複数のエクセルファイルに、 2~171行目までは 01.xls 172~341行目までは 02.xls 342~511行目までは 03.xls 512~681行目までは 04.xls 682~851行目までは 05.xls のように分けて保存したいです。 さらに、週毎に シートaaa のデータは更新されるため、 B~F.xls への保存も、前月分を残したまま追記していく必要があります。 (たとえば、01.xls を開くと、12月1週目のデータの後に、12月2週目のデータが 追記される・・・ という操作を組み込みたいです) こういった作業をするためのマクロは、実際にどのように書けばよいのか、 ご教示ください。 非常に複雑なマクロになってしまうかもしれませんが、 どうぞよろしくお願いいたします。

  • エクセル 別ファイルから シートを リンクを張らずに コピーしたい

    エクセル2003 1~4  はファイルの状態の説明です。 やりかたを質問したい部分は 5です。  1、ファイル(ブック)A.xls → 計算式が大量に入った数シートからなるファイル があるとする。 2、A.xls を そのままコピーし コピーされたファイルは B.xls に リネーム。 3、A.xls は 計算式等は変更しないが、データを変更し通常業務で使用。 4、A.xls の新バージョンを作るために B.xls を使って計算式等を編集。 (複数あるシートのうち一部シート(シート名 「あいうえ」 とする)のみの変更に加え さらに新シート「さしすせ」を作成) 5、A.xls のシート名 「あいうえ」をB.xlsで作った シート名 「あいうえ」と置き換え、 さらに新シート「さしすせ」もB.xlsからコピーして追加する。   普通にシート名 「あいうえ」や 新シート「さしすせ」を選択し  コピーを行うと B.xls からリンクを張った状態でコピーされて  しまう。たとえば シート「あいうえ」セルA1の中身を見ると  =[B.xls]あいうえ!A1*2+1 といったように [B.xls]が付いて  コピーされる。  これを回避して、単にそのまま丸ごと(A.xlsの中だけで編集したかのように) シートをコピーするにはどうしたら よいのでしょうか?  長くなってすいません。  よろしくおねがいいたします。  

  • VBAを使って、2つのファイルを比較したい

    OS Windows98 Excel2000 下記のとおり、2つのファイルがあるとします。 aaa.xls(比較元) bbb.xls(比較先) 内容はほとんど同じなのですが、 行や列が追加、或いは削除されている場合もあります。 1)追加されている場合 bbb.xlsよりaaa.xlsへコピペをする。 2)削除されている場合 aaa.xlsからセルの値を削除し、 それ以下の値を上へ詰める。 ここで問題なのは、 1)ページ毎に行数が決まっていない。 2)アイテム毎に1行ずつ空白の行がある。 3)追加或いは削除の場合のコピペを行う場合、   ページブレイクをどう扱うか。 4)連番等といったLOOP等を使ってできる基本になる   値が全くない。(わざわざ手動で追加してもよいが、   全部で20ファイル(比較元)、各ファイルには300以   上の行がある。) 5)セルによって、2つ以上のセル(上下どうし、或いは   隣どうし)が結合している場合もある。 以前、Excel98でVBAを使ってプログラムを書いたことはあ るのですが、Excel2000は初めての初心者同様のものです。 プログラムの内容を書いてもらえれば1番うれしいのです が、多分これだけの説明ではそういう訳にはいかないと思 います。 ですから、何らかのきっかけとなるアドバイスでも頂けれ ばと思ってここへ質問にきました。 よろしくお願いします。

  • 連続データから日付一致抽出し別シートへ転記したい

    ひとつの処理として実行したいのですが、マクロ組み合わせがわかりません。。。・・どなたか教えてください ●エクセル シートAAA A  B    C     D    E    F 1 2月1日 データ → 2 2月1日 データ → 3 2月1日 ↓ 4 2月2日 5 2月2日 6 2月3日 7 2月4日 8 2月5日 ↓ ・1日の入力は、複数行あります ・このシートAAAはマスタデータとして保存したい。 月間連続して入力されます ・シートAAA内に設置されたマクロボタンで、1日1回(日報) 日付名シートで追加してゆく Private Sub CommandButton1_Click() Worksheets.Add(After:=Worksheets("シートAAA")) _ .Name = Format(Now(), "yymmdd") End Sub ・同日付シートがある場合は、上書き。一応確認のダイアログを表示  し、マクロエラーを回避したい ・追加シート名yymmddのデータは、シートAAA内で抽出された yymmddと一致する全行列データを ・追加日付名シートタブのほかにセル内にもわかりやすく日付を表示させたい ・同時に追加シートyymmddを別ブックにも新規追加転記させたい ・できればシートAAA内のボタン、ワンクリックで処理完了させたい ■簡潔に?。。 マスタシートにデータ入力 ↓ ボタンクリック、 日付シートが追加される マスタシートから、その日だけのデータを抽出し日報シートを 追加していきたい。また別ブックにも同内容で同時書き出し保存 ↓ お願いします

  • VBA フォルダ内にファイルが存在するか確認したい

    OS: WindowsXP Office: 2003 ExcelVBAについて教えてください。 VBAで特定のフォルダー内でファイルが存在するかの確認をしたいのです。 例えば、以下のようなフォルダーに営業日がファイル名に付いた複数のファイルがあります。  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120201.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120202.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120203.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120206.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120207.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120208.xls 処理は20120201(2012年2月1日)から順番に行うのですが、その際、 報告書20120203.xlsはファイルが存在しているので変数1を返す。 報告書20120204.xlsは休日のためファイルが存在しないので変数0を返す。 次の処理で変数1の場合は処理をし、変数0の場合は処理を飛ばすと言った内容のマクロを考えています。 要はフォルダー内にファイルが存在するかしないかの部分のマクロ記述を知りたいのです。 どなたか、よろしくお願いします。

  • エクセルのマクロで、別ファイルの数値を参照する方法

    現在aaa.xlsというファイルを開いていて、 そのセルA1には20070621という数値が入っています。 別にbbb_20070621.xlsというファイルがあって、 そのファイルのsheet1内の、B1の値を参照したいと思います。 bbb_20070621.xlsのようなファイルが無数にあるので、 ファイルを開かなければいけないINDIRECT関数は使いたくありません。 =INDIRECT("[bbb_"&A1&".xls]Sheet1!B1") ファイルを開かず参照できるように、 できればマクロ(VBA)で組みたいと思っています。 RangeやCellでいろいろ試してみたのですが、 どうもうまくいかず、 分厚いマニュアルにも書いてありませんでした。。 初歩的な質問ですいませんが、 どなたかよろしくお願いします。

専門家に質問してみよう