こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelVBAでテキスト保存

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が開いたままにしたい)

以上、宜しくお願いします。

投稿日時 - 2007-01-27 18:21:15

QNo.2700825

困ってます

質問者が選んだベストアンサー

ActiveWorkbook.SaveAs (以下省略)
ではないですか? 

投稿日時 - 2007-01-27 18:39:56

お礼

早速の回答ありがとうございます。
確かにActiveWorkbookで保存できました!!
1シートだけの保存だからとActiveSheetしか考えていませんでした。
対象オブジェクトでそんな違いがあるのですね~
勉強になりました。m(..)m

投稿日時 - 2007-01-27 23:48:09

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

開いているファイル名は元のままで、シートだけ別名でテキスト保存するなら、自分でテキストファイルをオープンして1行ずつ書き込みを行い、クローズすればいいと思います。
ただし、各行をテキストファイルに書き込むフォーマットに整形して、ループでまわして書き込むなどSaveAsでExcelが自動的にやっていることを自分でやらないといけないですが。

方法としては、Openステートメントを使う方法と、FilesystemObjectを使う方法があります。

Openステートメントを使う方法
http://officetanaka.net/excel/vba/file/file08.htm

FileSystemObjectを使う方法
http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm

投稿日時 - 2007-01-27 18:58:27

補足

補足です。

ちょっと姑息な手段ですが、下記の方法でもうまくいきました。
  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

但し、この方法ではマクロを実行する度に元ファイルのタイムスタンプが
変わってしまう副作用はありますが。

何はともあれ、皆様のおかげで目的としているところは実現できました。
ありがとうございました。

投稿日時 - 2007-01-31 11:18:24

お礼

回答ありがとうございます。
思っていたよりも大変なのですね。
紹介して頂いたサイトを参考にさせて頂きたいと思います。
(このサイトいろいろと参考になりそうです。教えて頂いてありがとうございました。)
まずはお礼まで。

投稿日時 - 2007-01-27 23:52:55

あなたにオススメの質問