Excel VBA質問箱 IV

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

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


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

【63516】CSV保存をしたい。 ブルー 09/11/15(日) 1:58 質問[未読]
【63518】Re:CSV保存をしたい。 かみちゃん 09/11/15(日) 7:58 発言[未読]
【63519】Re:CSV保存をしたい。 よろずや 09/11/15(日) 8:02 回答[未読]
【63520】Re:CSV保存をしたい。 ブルー 09/11/15(日) 11:46 質問[未読]
【63521】Re:CSV保存をしたい。 かみちゃん 09/11/15(日) 12:09 発言[未読]
【63522】Re:CSV保存をしたい。 ブルー 09/11/15(日) 13:03 質問[未読]
【63523】Re:CSV保存をしたい。 かみちゃん 09/11/15(日) 13:26 発言[未読]
【63525】Re:CSV保存をしたい。 よろずや 09/11/15(日) 21:05 発言[未読]
【63529】Re:CSV保存をしたい。 ブルー 09/11/15(日) 22:36 お礼[未読]

【63516】CSV保存をしたい。
質問  ブルー  - 09/11/15(日) 1:58 -

引用なし
パスワード
   下記VBAで可能であれば、教えて下さい。お願いします。

フォルダAという中にブックBがあったとします。
ブックBにはSheet1,sheet2があり、Sheet1に実行ボタンを設けます。
実行ボタンを押すとSheet2の内容がフォルダA内にCSVとして吐き出せるような
プログラムを組みたいと思っています。
(フォルダ名とブック名は固定ではなく、変わる事を想定しています。)

CSVの名前はブック名もしくはブック名に実行した日時がついている状態にしたいです。
(理想は後者です。)

宜しくお願いします。

【63518】Re:CSV保存をしたい。
発言  かみちゃん  - 09/11/15(日) 7:58 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> Sheet2の内容がフォルダA内にCSVとして吐き出せる

この部分は、「マクロの記録」で記録できるので、記録してみて、まだわからないところがあれば、
そのコードを提示してみませんか?

【63519】Re:CSV保存をしたい。
回答  よろずや  - 09/11/15(日) 8:02 -

引用なし
パスワード
   >CSVの名前はブック名もしくはブック名に実行した日時がついている状態にしたいです。
>(理想は後者です。)

自ブックの名前は、Thisworkbook.Name で取得できます。
日付は、Date で取得できます。

【63520】Re:CSV保存をしたい。
質問  ブルー  - 09/11/15(日) 11:46 -

引用なし
パスワード
   アドバイスありがとうございました。
ただ「マクロの記録」で色々試してみたのですが、
下記の点がわかりません。
すいませんが、宜しくお願いします。

・ファイル名1
CSVファイルはブック名+時間で表示したいため、
Thisworkbook.Name + Date と書き換えてみたのですが、エラーになってしまいました。

・マクロの記録だとCSVで保存した際に
一度CSVファイルになってしまうため、CSV対象になったsheet2をブック名から
「sheet2」に書き直して、またexcel保存になってしまうため、
ファイルの上書きのメッセージが出てしまいます。
この点をなくしたいのと
この方法だとexcel保存時にはファイル名がThisworkbook.Nameだと日付も
ついてしまったものになってしまうため、困まります。

色々とわからない点があるので宜しくお願いします。


Sub Macro1()
  Sheets("Sheet2").Select
  ActiveWorkbook.SaveAs Filename:= _
    ファイル名1, FileFormat:=xlCSV, _
    CreateBackup:=False
  Sheets("B").Select
  Sheets("B").Name = "Sheet2"
  Sheets("Sheet1").Select
  ActiveWorkbook.SaveAs Filename:= _
    ファイル名2, FileFormat:=xlNormal, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
End Sub

【63521】Re:CSV保存をしたい。
発言  かみちゃん  - 09/11/15(日) 12:09 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>・ファイル名1
>CSVファイルはブック名+時間で表示したいため、
>Thisworkbook.Name + Date と書き換えてみたのですが、エラーになってしまいました。

どのようなコードで、どのようなエラーになったのでしょうか?
一例としては、以下のような感じです。

Sub SampleTest()
 Dim strFileName As String
 
 strFileName = ThisWorkbook.FullName
 strFileName = Mid(strFileName, 1, InStrRev(strFileName, ".") - 1)
 strFileName = strFileName & Format(Date, "yyyymmdd") & ".csv"
 MsgBox "ファイル名は" & vbCrLf & strFileName
End Sub

>この方法だとexcel保存時にはファイル名がThisworkbook.Nameだと日付も
>ついてしまったものになってしまうため、困まります。

CSVファイルを保存した後、元のExcelファイルは保存する必要があるのでしょうか?
ないのならば、保存せずに閉じてしまうのではいけないのでしょうか?

【63522】Re:CSV保存をしたい。
質問  ブルー  - 09/11/15(日) 13:03 -

引用なし
パスワード
   かみちゃん さん ありがとうございました。

日付のところはdataのformatをかませていなかったので
エラーになっていました。

保存のところなのですが、こちらは上手くいかないです。

現状だとマクロの記憶で
下記の動作を行っています。
1、sheet2を選択
2、名前をつけて保存(この場面でCSVファイル指定)

ここまでの動作でマクロを記憶しているファイル自体が
すでにCSVファイルになってしまっているので、
(Sheet2がCSV保存した段階でブック名になっている)
その後が上手くいきません。

理想としては
Sheet1にコマンドボタンを設定し、
ボタンを押すと、Sheet2はシート名がsheet2のそのままの状態で
同じフォルダ内にCSVファイルだけが吐き出されるようにしたいです。

たびたびすいませんが宜しくお願いします。

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>・ファイル名1
>>CSVファイルはブック名+時間で表示したいため、
>>Thisworkbook.Name + Date と書き換えてみたのですが、エラーになってしまいました。
>
>どのようなコードで、どのようなエラーになったのでしょうか?
>一例としては、以下のような感じです。
>
>Sub SampleTest()
> Dim strFileName As String
> 
> strFileName = ThisWorkbook.FullName
> strFileName = Mid(strFileName, 1, InStrRev(strFileName, ".") - 1)
> strFileName = strFileName & Format(Date, "yyyymmdd") & ".csv"
> MsgBox "ファイル名は" & vbCrLf & strFileName
>End Sub
>
>>この方法だとexcel保存時にはファイル名がThisworkbook.Nameだと日付も
>>ついてしまったものになってしまうため、困まります。
>
>CSVファイルを保存した後、元のExcelファイルは保存する必要があるのでしょうか?
>ないのならば、保存せずに閉じてしまうのではいけないのでしょうか?

【63523】Re:CSV保存をしたい。
発言  かみちゃん  - 09/11/15(日) 13:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Sheet1にコマンドボタンを設定し、
>ボタンを押すと、Sheet2はシート名がsheet2のそのままの状態で
>同じフォルダ内にCSVファイルだけが吐き出されるようにしたいです。

シート名がCSV保存することにより変わるため、その変わる前にシート名を記憶
させておいて、CSV保存した後に元に戻せばいいのではないでしょうか?

Sub Macro2()
 Dim strFileName As String 'CSVファイル名
 Dim strSheetName As String '元シート名

 strFileName = ThisWorkbook.FullName
 strFileName = Mid(strFileName, 1, InStrRev(strFileName, ".") - 1)
 strFileName = strFileName & Format(Date, "yyyymmdd") & ".csv"
  
 Sheets("Sheet2").Select
 strSheetName = ActiveSheet.Name
 
 ActiveWorkbook.SaveAs Filename:= _
    strFileName, FileFormat:=xlCSV, _
    CreateBackup:=False
 ActiveSheet.Name = strSheetName
End Sub

【63525】Re:CSV保存をしたい。
発言  よろずや  - 09/11/15(日) 21:05 -

引用なし
パスワード
   >理想としては
>Sheet1にコマンドボタンを設定し、
>ボタンを押すと、Sheet2はシート名がsheet2のそのままの状態で
>同じフォルダ内にCSVファイルだけが吐き出されるようにしたいです。
シートをコピーすると新しいブックのシートにできます。
それをCSVファイルとして保存しましょう。

【63529】Re:CSV保存をしたい。
お礼  ブルー  - 09/11/15(日) 22:36 -

引用なし
パスワード
   かみちゃんさん よろずやさん

ありがとうございました。
おかげさまで解決しました。

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