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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
読み取り専用ファイルを上書き...
-
エクセルで「名前を付けて保存...
-
ExcelVBAでデスクトップのPATH...
-
エクセルVBAについて
-
VB.NETでEXCELファイルを開き、...
-
Pivot table で集計されたデー...
-
Excel VBAでほかのアプリケーシ...
-
VB6でEXCELの表をHTML形式で保...
-
htmlから取り込んだ を消...
-
MATLABのtxtファイル等の読み込...
-
オンラインエディタ JS Bin
-
Word2000の差込印刷を繰り返し...
-
PHPでのサーバー内へのXML保存...
-
VBSでHPを保存するにはど...
-
VBAで、強制保存してブックを閉...
-
Excel VBAで作成したマクロをxl...
-
タイトルバーやメニューバーの...
-
c言語について
-
VSCodeの自動保存の2か所を無...
-
CFileDialogで保存したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
読み取り専用ファイルを上書き...
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
VBAで、強制保存してブックを閉...
-
コマンドプロンプトでデスクト...
-
ExcelVBAでデスクトップのPATH...
-
VBScriptで日本語が変です
-
vbaでIEの名前を付けて保存(A)...
-
Corel Digital Studioの動画をS...
-
エクセルで「名前を付けて保存...
-
タイトルバーやメニューバーの...
-
CImageのファイル名を指定して保存
-
webページの特定の部分だけ消し...
-
Pivot table で集計されたデー...
-
VBA メモ帳の上書き保存がしたい
-
VB.NETでEXCELファイルを開き、...
-
EclipseでJavaScriptファイルの...
-
VBScriptでのSaveAsについて
-
htmlから取り込んだ を消...
おすすめ情報