
エクセルからCSVファイルをYYMMDD付でマクロを使って
作ろうとしていますが拡張子の「.xls」がどうしても残ってしまいます。
例えば、「test.xls」が「test.xls070326.csv」のように。
これを「test070326.csv」とするにはどうしたらよいでしょう。
今のコードはつぎのようにしています。
Sub test1()
Dim flname As Variant
Dim wb As Workbook
flname = ActiveWorkbook.Name + CStr(Format(Date, "yymmdd"))
ActiveSheet.Copy
ActiveSheet.SaveAs Filename:=flname, _
FileFormat:=xlCSV
ActiveWindow.Close savechanges:=False
ActiveWorkbook.Close
End Sub
これでもCSVとしては使えるのですが、気持ちがすっきりしません。
どなたか正解をお願いします。
No.1ベストアンサー
- 回答日時:
Sub test1()
Dim flname As String
flname = Application.Substitute(ActiveWorkbook.Name, ".xls", "") _
& CStr(Format(Date, "yymmdd"))
ActiveSheet.Copy
ActiveSheet.SaveAs Filename:=flname, FileFormat:=xlCSV
ActiveWindow.Close savechanges:=False
End Sub
ではいかがでしょうか?
ただしパスを指定していませんので元のBookはディスクに保存されていることが前提です。
「Application.Substitute」とは初見です。
これで「.xls」を置き換えるのですね。
これですっきりしました。
すばやい解答ありがとうございました。
No.3
- 回答日時:
InStr(ActiveWorkbook.Name, ".") - 1とは、Nameの中から「.」までの文字数を取得し、それから1を引いています。
Left(ActiveWorkbook.Name, で、Nameの左側からその数だけ文字をぬき出しています。
なるほどInStrとはSERCH関数のことですか。
(同じ機能なのに名前が違ったり、
Substituteは頭 に「Apprication.」が付いたり。
同一にして欲しいと思うのは私だけでしょうか)
VBAのサンプルでは関数を見たこと無かったので
ほとんど気にしていませんでしたがお蔭様で
VBAでの使い方がわかりました。
お二人ともありがとうございました。
No.2
- 回答日時:
Sub test1()
Dim flname As Variant
Dim wb As Workbook
flname = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1) & Format(Date, "yymmdd") & ".csv"
ActiveSheet.Copy
ActiveSheet.SaveAs Filename:=flname
ActiveWindow.Close savechanges:=False
ActiveWorkbook.Close
End Sub
でもできますね。
「InStr(ActiveWorkbook.Name, ".") - 1」とは
Nameの中から拡張子の手前の「.」より左側の文字列を
使うという意味でしょうか。
私はNameの最後の4桁(拡張子部分)を消そうと思いましたが
桁数が変動するので無理と思いました。
いろいろやり方があるのですね。
これまた解答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスの背景をVB...
-
SELECT INTOで一度に複数の変数...
-
PostgreSQLのtimestamp型で時間...
-
既にテーブルが存在する場合の...
-
sqlに記述できない文字
-
フラグをたてるってどういうこ...
-
truncate tableを使って複数の...
-
selectの単純繰り返し
-
テーブル定義書(Oracle) 【IX】...
-
テーブル名が可変の動的SQLをフ...
-
Accessの構成をコピーしたい
-
結合したテーブルをSUMしたい
-
csvデータ不要列の削除をbatフ...
-
SELECTした結果に行番号を求めたい
-
既存データをINSERT文にして出...
-
ADO+ODBCでテーブルに接続する...
-
集計でテストの各教科の最高得...
-
Activation codeとは
-
oracle ora-02298
-
SQLで、過去で一番大きい日付の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスの背景をVB...
-
CSVファイルを読み込んでテーブ...
-
SQLSERVER 連番更新について
-
timestamp が空のデータを除い...
-
データがリストアできない!!
-
SQL SERVERの BULK INSERT
-
配列データに対する、要素の追...
-
Accessエクスポート時に連番を...
-
ACCESS テキストボックスに入...
-
SELECT文で足し算をした場合、N...
-
型について
-
PostgreSQL serial型の質問
-
時間の比較をしたい
-
エクセルVBEについて
-
PostgreSQLのnumericでの書き込...
-
pgAdminIII RAISEの結果取得に...
-
date型でのbetweenについて教え...
-
1つのドメインを複数のDNSで管...
-
serial型について
-
fleuentd to mongodb件数合わない
おすすめ情報