• 締切済み

エクセルマクロ ファイル出力

エクセルマクロにおいてファイル出力の件で、教えてください。 Asheetに、PDF出力とCSV出力を一括で行えるマクロを付加したボタンを作成したいです。 PDF出力範囲は、AsheetのA1:L40で固定。 CSV出力範囲は、BsheetのA1:BF29で固定。 また両方の出力ファイル名を、AsheetのF1の内容をファイル名にしたいです。 マクロに関して初心者ですので、お手柔らかにお願いいたします。 よろしくお願いいたします。

みんなの回答

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

エクセルで自分のしたいことや仕事でしたいことは、自分のエクセルのVBAの技量を待ってくれない。日ごろから勉強しておくほかない。 本件は課題を文章で書いただけで、丸投げで、コードをコピペするほかないレベルだろう。 もう一つ、質問者は、フリーソフトでも探したらどうか。 XXをやりたいというのは勝手だが、もっと自分で調べるや、本を読む、実際にやってみる必要がある。初心者にはむつかしいことを望み過ぎ。 ーー (1)PDFやCSVなど、エクセルブック以外の保存を望んでいること (2)出力範囲(シートとセル範囲)を限っていること などの点でやさしい課題でない。 ーー PDFについては https://support.office.com/ja-jp/article/PDF-%25E5%25BD%25A2%25E5%25BC%258F%25E3%2581%25A7%25E4%25BF%259D%25E5%25AD%2598%25E3%2581%2599%25E3%2582%258B-d85416c5-7d77-4fd6-a216-6f4bf7c7c110?ui=ja-JP&rs=ja-JP&ad=JP&fromAR=1#bm5 に「マクロの記録モード」にして、この操作をやってみて、記録されるコードを見るのはどうか。 PDFは印刷に親和性があり、「指定した範囲」印刷や「ページ指定」印刷などで、印刷範囲を限定はできるかもしれない。 ーー CSVは、csvファイルはどういうものか知っているのか。 いろいろ知っておくべき点があり、VBAでやるのは経験が必要。 シートに下記のもっとも簡単なテストデータを作ってやってみるほかない。 ーー 元データ A2:D4 aa,1,23,東京都 bb,3,43,神奈川 cc,5,56,静岡 ーー 標準モジュールに Sub test02() Close #1 Open "CSVアウトプット" For Output As #1 lr = Worksheets("Sheet2").Range("A1000").End(xlUp).Row MsgBox "最終行 " & lr s = "" For i = 2 To lr s = "" For j = 1 To 4 x = Worksheets("Sheet2").Cells(i, j) 'If IsNumeric(x) Then 'xc = CStr(x) 'Else 'xc = x 'End If s = s & x & "," Next j s = Left(s, Len(s) - 1) '最後の余分なカンマを省く MsgBox s Print #1, s s = s & vbCrLf Next i '-- Close #1 End Sub ーー 結果 メモ帳で確認 aa,1,23,東京都 bb,3,43,神奈川 cc,5,56,静岡 ーーー 一番簡単な例を挙げて書いているので、それを理解することが先決。 その後自分の場合は、どこをどう変えるか考えること。 相当の予備知識が必要と思う。

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

関連するQ&A

  • VBAマクロでCSV出力

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

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • エクセルで別ファイルのシートの貼り付けマクロ

    マクロ初心者です。よろしくお願いします。 excelファイルのシートに同じシート名csvファイルのデーターの貼り付けをしたいのです。 ↓詳しくは。 excelファイルがあります。(ファイル名:全社) シート名=集計、1、2、3、4、5、6、7、8、9、10(固定) csvファイルがあります。1~始まり数は変動(1~3だったり、1~7とか) 1ファイル=1シート、ファイル名とシート名は同じ excelファイルのシート(1~10)に、開いたcsvファイルの同じシート名(1~10)のデータを貼り付けたい。 毎回コピー・貼り付けの繰り返し作業なので、マクロ作成を試しているのですが、うまくいきません。 教えてください。お願いします。

  • このようなエクセルマクロを組みたいのですが...

    下記のようなマクロを組みたいと思っていますが、 知見がほとんどないので教えていただきたいと思います。 "csv"というフォルダにランダムなファイル名でcsv形式のファイルが100以上保存されています。 目的は、 そのcsvファイル内の一部のデータをひとつのファイル(ファイル名を"まとめ"とします)に移して並べたいと思います。 <前提> "csv"フォルダと"まとめ"ファイルは既に開かれている状態とします。 "まとめ"ファイルを開いた状態で、マクロを走らせると、 (1)csvファイルが開く (2)セルA1とB1をコピー (3)"まとめ"ファイルのA1、A2へ貼り付け(行と列を変更) (4)csvファイルを閉じる (5)次のcsvファイルが開く (6)セルA1とB1をコピー (7)"まとめ"ファイルのB1、B2へ貼り付け(行と列を変更) (8)csvファイルを閉じる 以降、"csv"フォルダの中身をすべて処理できるまで繰り返し。 という風に考えていますが、 当方あまり知識が無くアレンジが難しいためできる限りシンプルにと考えています。 そのため、もしこうした方が...等あればアドバイスいただけるとありがたいです。 すみませんがよろしくお願いいたします。

  • Excelマクロ CSV出力

    Private Sub cmd_csv_Click() Open "\\サーバ名\フォルダ名\あああ.csv" For Output Access Write As #1 With Sheets("データ") For intRow = 3 To .Range("a2").End(xlDown).Row Print #1, .Cells(intRow, 1) & "," & .Cells(intRow, 2) & "," & .Cells(intRow, 3) & "," & .Cells(intRow, 4) & "," & .Cells(intRow, 5) & "," & .Cells(intRow, 6) & "," & .Cells(intRow, 7) & "," & .Cells(intRow, 8) & "," & .Cells(intRow, 9) & "," & .Cells(intRow, 10) & "," & .Cells(intRow, 11) & "," & .Cells(intRow, 12) & "," & .Cells(intRow, 13) & "," & .Cells(intRow, 14) & "," & .Cells(intRow, 15) Next intRow End With Close #1 MsgBox "出力完了しました。 " & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "出力ファイル:フォルダ名\あああ.csv" End Sub ------------------------------------------------------------- 上記のロジックで「データ」シートのA3からO列の最終行までをCSV出力しています。 このマクロにA列に値が入った行のみを出力する(A列が空白なら無視し次の行へ)というロジックを追加したいのですが、方法がわかる方いらっしゃいますか? どなたか教えてくださいm(__)m!!

  • Excel ファイル操作マクロ

    Excel で、[ファイル][名前を付けて保存]をマクロで行うようにしました。 新しいファイル名にはマクロで日付記号を付加してあります。 このあと、すぐにもとのファイルを開き、新しくできたファイルを閉じる操作を、マクロで行いたいのですが、どうしたらよいでしょうか。 あるいは、別名コピーという方法はあるのでしょうか。 教えて下さい。よろしくお願いします。

  • PDFファイルからEXCELへ出力

    あるPDFファイルがあってそれはエクセルのような表になっています。これをPDFからエクセル出力できるようなソフトはご存知ありませんか? できればPDFファイルにある一部範囲選択してエクセルへ出力したいのです。宜しくお願い致します。

  • 複数のファイルをまたぐエクセルマクロの書き方

    開いている複数のエクセルブック(.csv)に対して同じ処理を行いたいのですが、いいマクロが分からなくて困っています。ご存じの方がいらっしゃったら、教えてください。 ちなみに、ファイル名は、1 A、1 B、2 A、2 B・・・と言った感じです。 Sub i = 1 Do While i < 9 Windows("i A.csv").Activate ・・・ Loop End Sub とやってみたのですが、ファイルが選択されずに、止まってしまいました。

  • エクセルからCSVファイルに出力したい?

    エクセルのシートからマクロを使ってCSVファイルに出力したいです。 そこで調べたのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2376607 こちらの質問で以下のようなコードが参考になりました。 Sub Macro1() Dim myBook As String myBook = ActiveWorkbook.FullName myBook = Left(myBook, Len(myBook) - 3) & "CSV" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=myBook, FileFormat:=xlCSV ActiveWindow.Close False End Sub このコードではCSVのファイル名がエクセルシートのファイル名になってしまいます。 今回の質問ですが、CSVファイルを違う名前で保存するにはどのようにすればいいのでしょうか? (CSVファイルの名前は常にabc.csvで保存するものとします)

  • Excelマクロ 空白セルを無視してCSV出力

    Excelのマクロについて質問します。 <sheet1>の内容をCSVに出力するマクロを使用しているのですが、 問題があって困っています。 <seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に 「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。 「OK」以外の場合は、空白になるようにしてあります。 【sheet1】   A    B    C    D    E … 1 100  200  300  400  500 2 100  200  300  400  500 3 100  200  300  400  500 4 100  200  300  400  500 5 6 【sheet2】   A 1 OK 2 OK 3 OK 4 OK 5 6 <sheet1>をマクロでCSV出力する際に、「空白だけど数式が入っているセル」を 除外する方法を教えてください。 現在は「空白だけど数式が入っているセル」もCSV出力されてしまい、「,」が 連続で表示されるので、手動で「,」を削除しています。 ■今使用しているマクロは以下になるので、これに追記する形で改良できないでしょうか。 Sub CSV出力() Dim FileN As String FileN = Application.GetSaveAsFilename( _ InitialFileName:="book1.csv", _ FileFilter:="CSV ファイル (*.csv), *.csv") Sheets("sheet1").Copy ActiveWorkbook.SaveAs Filename:=FileN, FileFormat:=xlCSV ActiveWorkbook.Close Savechanges:=False End Sub よろしくお願いします。

専門家に質問してみよう