Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3850 / 13646 ツリー ←次へ | 前へ→

【59845】CSV出力(ワークシート指定での)について VBA 09/1/13(火) 16:02 質問[未読]
【59847】Re:CSV出力(ワークシート指定での)について kanabun 09/1/13(火) 17:27 発言[未読]
【59848】Re:CSV出力(ワークシート指定での)について kanabun 09/1/13(火) 19:38 発言[未読]

【59845】CSV出力(ワークシート指定での)について
質問  VBA  - 09/1/13(火) 16:02 -

引用なし
パスワード
   CSV出力に関して質問いたします。
ワークシート1、ワークシート2の2種類があります。
現在、下記の構文でCSV出力していますが、
ワークシート1のみです。
ワークシート2を出力するにはどうすればよろしいでしょうか?
ご指導お願いします。
”現在の構文”
Private Sub CommandButton1_Click()
Dim Target As Range
 
  Set Target = ActiveSheet.UsedRange.Resize(, 45)
  Target.Select
  If MsgBox("CSV保存しますか?", vbOKCancel) _
                 = vbCancel Then Exit Sub
 
  Dim SaveFile ' CSVファイルパス
  SaveFile = CreateObject("WScript.Shell"). _
       SpecialFolders("DeskTop") & "\データ.Csv"
  SaveFile = Application.GetSaveAsFilename(SaveFile, "CSV,*.csv")
  If VarType(SaveFile) = vbBoolean Then Exit Sub
 
  '(1)新規Bookをシート枚数1枚で 追加する。
  Dim SaveCount&
  Dim NewBook As Workbook
  With Application
    SaveCount = .SheetsInNewWorkbook
    .SheetsInNewWorkbook = 1
    Set NewBook = Workbooks.Add
    .SheetsInNewWorkbook = SaveCount
  End With
 
  '(2) 元のBookの指定シートのUsedRange.Resize(,45) の範囲を _
    Copyして、新規BookのSheets(1).Range("A1")に貼り付ける。
  Target.Copy NewBook.Sheets(1).Range("A1")
 
  '(3)新規BookをCSV形式で保存する
  With NewBook
    .SaveAs SaveFile, xlCSV, Local:=True
    .Save
    .Close
  End With
  MsgBox "CSV形式で保存しました", , SaveFile
 
  Set Target = Nothing
  Set NewBook = Nothing
End Sub

よろしくお願いします。

【59847】Re:CSV出力(ワークシート指定での)につい...
発言  kanabun  - 09/1/13(火) 17:27 -

引用なし
パスワード
   ▼VBA さん:
>CSV出力に関して質問いたします。

>現在、下記の構文でCSV出力していますが、
>ワークシート1のみです。
>ワークシート2を出力するにはどうすればよろしいでしょうか?

コードの どの部分が分からないですか?

現在は シート1に置いた CommandButton に処理を記述しているわけです
か? (そうだと仮定すると)

>Private Sub CommandButton1_Click()

   '現在は   ↓ ActiveSheetの指定範囲を xlCSV出力していますが
>  Set Target = ActiveSheet.UsedRange.Resize(, 45)

このボタンと同様のものを シート2 にも置き、そのClickイベントプロシージャ
に、シート1とまったく同じコードを書いておくだけでも、シート2の
CSV出力はできますよね?

【59848】Re:CSV出力(ワークシート指定での)につい...
発言  kanabun  - 09/1/13(火) 19:38 -

引用なし
パスワード
   ▼VBA さん:

> 現在は シート1に置いた CommandButton に処理を記述しているわけです
> か? (そうだと仮定すると)

すみません。想定がちがっていたようです。。

>Private Sub CommandButton1_Click()
は、ユーザーフォームに置いてあるボタンなんでしたね?

前スレ
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=58669;id=excel

UserFormのボタンでしたら、
構文は
>  Set Target = ActiveSheet.UsedRange.Resize(, 45)
         ~~~~~~~~~~~
のままで、
シート2が出力したければ
シートをアクティブにして、ボタンをClickすればいいだけのことでは?

3850 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free