
ExcelVBAを使って、ワークシートをテキストファイルに保存しようとしています。
CSV形式で保存するときは、
Sheets("test").Activate
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
でtest.csvに保存できますが、
単純にテキストファイルとして保存したいときに
Sheets("test").Activate
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".txt", _
FileFormat:=xlText, CreateBackup:=False
としても、実行時に下記のエラーになってしまいます。
実行時エラー '1004'
アプリケーション定義またはオブジェクト定義のエラーです。
どうしたらよいのでしょうか?
また、CSVで保存した時も開いているファイルがtest.csvに変わってしまいますが、できれば、開いているファイルは元のファイルのままでシートだけを保存するにはSaveAsメソッドではなく、他のメソッドを使うのでしょうか?
(hogehoge.xlsのtestシートを保存してもhogehoge.xlsが開いたままにしたい)
以上、宜しくお願いします。
No.1ベストアンサー
- 回答日時:
ActiveWorkbook.SaveAs (以下省略)
ではないですか?
早速の回答ありがとうございます。
確かにActiveWorkbookで保存できました!!
1シートだけの保存だからとActiveSheetしか考えていませんでした。
対象オブジェクトでそんな違いがあるのですね~
勉強になりました。m(..)m
No.2
- 回答日時:
開いているファイル名は元のままで、シートだけ別名でテキスト保存するなら、自分でテキストファイルをオープンして1行ずつ書き込みを行い、クローズすればいいと思います。
ただし、各行をテキストファイルに書き込むフォーマットに整形して、ループでまわして書き込むなどSaveAsでExcelが自動的にやっていることを自分でやらないといけないですが。
方法としては、Openステートメントを使う方法と、FilesystemObjectを使う方法があります。
Openステートメントを使う方法
http://officetanaka.net/excel/vba/file/file08.htm
FileSystemObjectを使う方法
http://officetanaka.net/excel/vba/filesystemobje …
この回答への補足
補足です。
ちょっと姑息な手段ですが、下記の方法でもうまくいきました。
Dim fName as String
'元のワークブック名を保持
fName = ActiveWorkbook.Name
'テキストファイル保存
Sheets("test").Activate
ActiveWorkbook.SaveAs FileName:=ActiveSheet.Name & ".txt", _
FileFormat:=xlText, CreateBackup:=False
'上書き確認して来ないように元ファイル削除
Kill fName
'ワークブック名を元の名前に戻す
ActiveWorkbook.SaveAs FileName:=fName, _
FileFormat:=xlWorkbookNormal, CreateBackup:=False
但し、この方法ではマクロを実行する度に元ファイルのタイムスタンプが
変わってしまう副作用はありますが。
何はともあれ、皆様のおかげで目的としているところは実現できました。
ありがとうございました。
回答ありがとうございます。
思っていたよりも大変なのですね。
紹介して頂いたサイトを参考にさせて頂きたいと思います。
(このサイトいろいろと参考になりそうです。教えて頂いてありがとうございました。)
まずはお礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで、強制保存してブックを閉...
-
Pivot table で集計されたデー...
-
Corel Digital Studioの動画をS...
-
VBAでIEの「ファイルのダウンロ...
-
VBScriptでのSaveAsについて
-
VBScriptで日本語が変です
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
VBAでPDF作成をしたあと、指定...
-
FileSearchが使えなくなり困っ...
-
度々すみません。(動画縦横変...
-
CImageのファイル名を指定して保存
-
vlan internal allocation poli...
-
共有しているファイルを削除し...
-
YAHAMA RTXシリーズのコマンド...
-
onedriveで同期解除をしたら、...
-
TXTファイルを上書き保存する前...
-
USBデータの消失
-
移動先にないファイルのみをコ...
-
win10の不具合について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで、強制保存してブックを閉...
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
エクセルでファイルの最終更新...
-
読み取り専用ファイルを上書き...
-
Pivot table で集計されたデー...
-
エクセルで「名前を付けて保存...
-
VBAでPDF作成をしたあと、指定...
-
VB.NETでEXCELファイルを開き、...
-
VBA メモ帳の上書き保存がしたい
-
別名で保存し、元の名前で中身...
-
【VC++】CDC→WMFファイルに保存...
-
意味不明のタグが挿入されてい...
-
至急教えてください!プログラ...
-
VBSでHPを保存するにはど...
-
リスト構造
-
プログラムについて
-
ファイルのアップロード
-
エクセル:マクロ:保存時に連...
-
度々すみません。(動画縦横変...
おすすめ情報