質問: 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が開いたままにしたい) 以上、宜しくお願いします。
回答: 開いているファイル名は元のままで、シートだけ別名でテキスト保存するなら、自分でテキストファイルをオープンして1行ずつ書き込みを行い、クローズすればいいと思います。 ただし、各行をテキストファイルに書き込むフォーマットに整形して、ループでまわして書き込むなどsaveasでexcelが自動的にやっていることを自分でやらないといけないですが。 方法としては、openステートメントを使う方法と、filesystemobjectを使う方法があります。 openステートメントを使う方法 http://officetanaka.net/excel/vba/file/file08.htm filesystemobjectを使う方法 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm