• ベストアンサー

【Excel VBA】セルの値を新規xls(またはcsv)ファイルに出力したい

お世話になります。 あるブックのあるシート内のデータを、別の新規Bookに自動出力したいのですが。 A.Book(元データ) セル A1:A200    B1:B200 ↓ 指定した名前でCドライブ直下に出力(常に上書き) この動作をA Bookのシートにボタンを作成し、 それをクリックすることで起動させたいです。 参考になるソースを教えていただけないでしょうか? (当方、初心者です) ※質問内容に不明点があればご指摘ください、補足欄にて対応させていただきます

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

  • ベストアンサー
  • tarodaro
  • ベストアンサー率43% (7/16)
回答No.1

Dim buf As Variant buf = ActiveSheet.Range("a1:b200") Sheets.Add after:=Worksheets(Worksheets.Count) Application.DisplayAlerts = False With Worksheets(Worksheets.Count) .Name = "copy" .Range("a1:b200") = buf .Move End With With Workbooks(Workbooks.Count) .SaveAs "C:\test.xls" .Close End With Application.DisplayAlerts = True

motsu2006
質問者

お礼

お礼が遅くなりまして申し訳ありません。 できました! まさに希望通りの動作でした!

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#3です。 >どこから動作させたのか 普通にやりました。セル範囲をコピーしておいて、 ファイルー新規作成ー空白のブック 貼り付け 名前をつけて保存 をしました。(E2002) >メニューに"エクスポート 私の語感では (1)受け・渡しのソフトが違う(エクセルとアクセスとか) (2)両者標準のファイル形式が違う(xlsとmdbとか) CSVなどを通じての場合はおなじでも使うかな。 そういう際に、ファイルを取り込む方法を提供している場合に使う。 (3)俗語・普通名詞的にデータを「移す」という意味で使う 場合も見かける。 それで今回はエクセル間ですから使わない。

motsu2006
質問者

お礼

非常に参考になりました。 ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルがおしえてくれるのではないですか。 マクロの記録をとりました。 Sub Macro1() Workbooks.Add Windows("Book1").Activate Range("A1:B10").Select Selection.Copy Windows("Book2").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\XXXX\My Documents\Book2.xls", FileFormat:=xlNormal _ , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub となりました。 関係箇所を変更して、コマンドボタンクリックイベントで上記コードを囲えば済むのではないですか。

motsu2006
質問者

補足

私も最初はマクロ記録で対応しようと思ったのですが、 メニューに"エクスポート"のようなものがなかったのでできませんでした。 どこから動作させたのか、参考までに教えていただけますか?

回答No.2

あなたのやりたい機能は、全て過去の質問履歴に書かれているサンプルを組み合わせることで、実現可能だと思います。 ただ初心者であれば、その検索キーワードがわからないかも知れませんので、そのキーワードだけ エクセルを操作 「excel.application」 エクセルの保存 「saveas」 CSVっていうか、テキストファイルの関連 http://okwave.jp/kotaeru.php3?q=2100690 ↑最近アドバイスしたけど、そのまま放置されているスレッド 「初心者だからわからない⇒丸投げの質問」 ではいつまでも初心者です。 あなたのやりたいことは ・エクセルを開く ・新規ブックの追加 ・シートへの値の反映 ・ブックの保存 ・あるいはテキストファイルの読み書き といった「複合の機能」です。 的を絞った質問をすることも、これまた「スキル」です。 がんばってください。

motsu2006
質問者

お礼

おっしゃる通り、今の私では初心者から脱皮できませんよね……。 (おそらく(汗;)→自在に操れる言語(もう流行らない古いもの)とはあまりにも違うので、キーワードを見出せなかったのも事実です。 時間がなかったというのもありますが、過去ログをきちんと確認しなかったのも当サイトではマナー違反でしたね……。 精進してまいります。

関連するQ&A

  • Excel2010VBAのセルの入力が遅い

    Excel2010のVBAなんですが、処理時間が非常に遅いです。プログラムの中でも遅い部分はセルに入力する部分です。多分24時間ぐらいプログラムを走らせておきましたがそれでも終わっていませんでした。 シートは6個あり、それぞれ関数の計算がされており、シート1からシート3までの計算されたものがシート4に出力され、そのシート4からプログラムで計算してシート5に出力されるコードです。 シート5に出力するデータは、「年」、「月」、「日にち」、「時刻」、「データ1」、「データ2」、「データ3」、「データ4」の8つの項目です。これは全ての行に入力するわけではなく、入力しなくてもいい空白の部分もあります。空白でもいいセルには入力の処理はしないようになっています。 処理時間が遅いというのは、データ量が非常に多いということもあるのですが最初に参照するデータは50万件以上(実際はこれよりはるかにあるのですが区切っています。)あります。 全てのコードはここには記載しませんが、特に遅いセルの入力の部分は、次の通りです。 For~ With Workbooks("ブック名.xlsm").Worksheets("シート5") .Cells(b, 1) = Year(日付) .Cells(b, 2) = Month(日付) .Cells(b, 3) = Day(日付) .Cells(b, 4) = TimeValue(日付) .Cells(b, 5) = Application.Round(データ1, 3) .Cells(b, 6) = Application.Round(データ2, 3) .Cells(b, 7) = Application.Round(データ3, 3) .Cells(b, 8) = Application.Round(データ4, 3) End With Next この部分の処理を早くするにはどうしたらいいでしょうか? 回答よろしくお願いします。

  • 【EXCEL2007】 VBA(マクロ)の編集

    EXCEL初心者です。 マクロというものを最近知り、マクロ作成の練習をしているところです。 今こういったことで悩んでいます。 ■『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない(Exit sub)』というソースを 書きたいが、どのようにソースを作成すればいいのか。 ■現在こういった『VBA(マクロ)』を作成しています。 『(1)「B2」セルに文字を入力 (2)マクロ機能を登録した「ボタン」をクリック (3)「B2」セルに入力した名称で「新しいブックを作成」 (4)そのブック名称で指定先に「保存」する。』 今のところ、「マクロの記録」でそういうプログラムを作ること自体は勝手にできてくれました。 「B2」セルに「SampleSheet」と入力して、ボタンを押せば、 「SampleSheet」という「名称」で「新しいブックを作成」することはできています。 ■ですが、例えば「B2」セルに入れた名称が、『保存先にすでにあり』 「上書き保存しますか」というメッセージが出た場合、 上書き保存したくないので、「いいえ」ボタンを押すと 「エラーメッセージ」が出てしまいます。 そこで、 『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない、そのマクロ自体を終了する(Exit sub)』というソースを 書きたいんですが、どのようにソースを作成すればいいのかがわかりませんでした。 ■参考ソースをのせていただけると助かります。 ご回答、よろしくお願いします。

  • エクセル フォルダ内の.xlsファイルの集計

    エクセルで、複数の.xlsファイルの特定セルを集計するマクロを組みたいのですが、VBA勉強しはじめでうまくいかず、皆様の知識をお借りできればありがたいと思い質問させていただきます。 作業としては あるフォルダに複数の.xlsファイル(それぞれのファイルは同一形式で、sheet1およびsheet2は作業用シート。sheet3以降がデータの入ったシートとする)を置いておき、それぞれのデータ入りシート(シート数はファイルにより異なる)の特定セルを集計したものを、新たなブックに書き込む という形です。 その際に、各シートの特定セルの内容により出力するセルを変えたいと思っています。 実際には、 AAA.xlsというファイルの3枚目以降のシートで、L2セルに「B」と記述があれば別ブックのB3セルに、「C」と記載されていれば別ブックのC3セルに、それぞれD4セルの数値を集計する。 次にBBB.xlsというファイルに関しても同様に集計し、その結果はB4セルとC4セルに出力する これを当該フォルダに入っているファイル全てについて行う ※L2セルには「B」「C」以外の文字は入りません。 こういった作業ができればと思っています。 お時間のある方がおられましたら、ご教授いただけますでしょうか。 参考になるサイトなどがありましたら、アドレスだけでも御教えいただけると幸いです。 質問の仕方が悪いようでしたら、ご指摘いただければ再度説明させていただきます。拙劣な説明ですがどうかよろしくお願いします。

  • ExcelのVBA、セルについて教えて下さい

    セル内容の比較についてのマクロで教えてください。 まずブックAとブックBという2つのワークブックがあります。 ブックAのD4セルにはS144A03といったよな数字と英語が入っています。 ここからが行いたいことなのですが ブックAでマクロ実行 ⇒ ブックBを開きシートAを選択 Application.InputBoxでブックBのシートA内のセルを選択してOKを押した時 ブックAのD4セルの内容とApplication.InputBoxで選んだセルの内容が同じなら”認証OK” 違う場合は”認証NG”とMsgBoxで表示されるようにしたいです。 認証後はどちらの結果であってもブックBの方は閉じてしうまう形にしたいです。保存の確認はいりません。 ご指導のほどよろしくお願いします。

  • VBA セルの値と同じ、別ブックのシートに貼付け

    いつもお世話になります。 シートをコピーし、閉じたブックのシートに貼付けしたいのですが、詳細は次の通りです。 ブックA…マクロがあり、Sheet1のA1プルボタンから店舗名を選択すると、その店舗の在庫が表示されます。 ブックB…シートが100枚ほどあり、シート名が各店舗名になっています。 ブックAを開き、A1から店舗を選択し、在庫数を手入力で修正し、マクロボタンを押したら、ブックB(閉じた)の同じシート名に、値で貼付ける ブックAは上書きしないで閉じる 決算時期で困っています。よろしくお願いします。

  • VBAマクロでCSV出力

    はじめまして、よろしくお願いします。 ExcelのVBAマクロで 特定のセルの範囲を「シート名.csv」で出力するようなプログラムを書きたいです。 例)シート名「TEST」内にあるマクロボタンを押すと  A1:A10のセルの内容が「TEST.csv」(アスキー形式ならなんでも)  に出力される。 どういうやり方があるか、お勧めのサイト等、 ご教授いただけないでしょうか? 以上、よろしくお願いいたします。

  • エクセルVBAでCSV出力する際、リンク0を空白に

    エクセル2019使用 シート名 「フォーマット」 「シート1」 「フォーマット」に入力されているデータを 「シート1」のセルB4:T100(行数は「フォーマット」データ量でその都度変わります) に =フォーマット!A63 のようにリンクさせております。 「シート1」をCSVで出力したところリンク元が空白のため「0」と表示されてしまいます。 詳細設定の「ゼロ値のを表示する」をオフにしてもだめでした。 関数で空白なら空白でもだめでした。 リンク元空白の状態で「シート1」のセルB4:T100をCSV出力。 「シート1」ではリンク元空白を空白にする方法はありますでしょうか。

  • エクセルVBA ブック出力方法について(2)

    いつもお世話になっています。 以前にも同じ内容の質問をさせて頂いた者です。 回答を頂きましたが、当方説明不足および勉強不足のため、 再度質問させて頂きます。 元のファイルから、特定のセル部分のみを出力先ファイル(新規.xls)へブック出力したいのですが 方法がわかりません。 当方にて記述したVBAは以下ですが、満足のいく作成ができておりません。 矛盾および誤りを指摘できる方はご指摘頂けないでしょうか。よろしくお願いします。 Sub ブック出力() Sheets("Sheet1").Select Sheets("Sheet1").Range("リスト").Copy Sheets("Sheet1").Range("A1:J12").Paste Workbooks.Add ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\新規.xls" End Sub ※リスト→出力元ファイルのA1:J12までの範囲 ※出力元ファイル、出力先ファイルのシート名は不変です。(両方ともsheet1) ※出力先セル、出力元セルともに範囲は同じです。(両方ともA1:J12)

  • エクセル)VBAで他のブックのセル参照

    はじめまして。 エクセルのVBAについて教えてください。 VBAで、 book1のsheet1のセルA1にあるデータを開いていない(アクティブでない)別のbook2のsheet2のセルB1にコピーしたいのですがこんなことってできるのでしょうか? ・・やはり開いていないとダメなんでしょうか? あと、これって"ブック参照"っていうことなんでしょうか?自分がやりたいことが何なのか判らないので上手く調べる事が出来ず難儀しています。 よろしくお願いします。

  • Excel VBA 値取得について

    お世話になります。 どなたかお力をお貸しください。 Excel2003 VBAでプログラムを組んでおり、エクセルのシートをデータベース代わりに利用しています。 複数のブック散乱している10万個近くのテキストボックスの値を、 「A」というブックの「シート1」のセルに格納して行きたいと思っております。 値の格納方法としては、「A」ブックの「シート1」の セルA1からA2、A3…A列最終行(6万強)まで縦の並びにデータを格納していきます。 ただし、「シート1」に格納したい値は10万個近くあるので、 A列だけでは足りなくなります。 A列の最終行まで値を格納し終えたら、自動的にB列に移動して、 セルB1からB2、B3…B列最終行(6万強)という遷移させていきたいのです。 A列のみに格納していくのであれば、理解できるのですが、 自動遷移がわかりません。 For i = 0 To 最終行(6万強) シート1.Range("A" & i) = 参照元 Next i よろしくお願いします。

専門家に質問してみよう