• ベストアンサー

VBA エクセル2003だと出るエラー

VBAはじめたばかりですが、宜しくお願いいたします。 エクセル2000ではエラーがでませんが、2003の場合次のようなエラーがでます。 実行時エラー1004 アプリケーション定義またはオブジェクト定義エラーです 「デバック」を押して、コードをみますと、次の行に黄色いマーカーがつきます。 Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt" マウスオーバーすると、次の2つが表示されます。 xlCurrentPlatformText= -4158 ThisWorkbook.Path ="C:\Document&【現在このファイルがあるパス】" 解決方法はありますでしょうか。 ご存知の方、いらっしゃいましたら、なにとぞ宜しくお願いいたします。 このマクロの実行目的は、あるエクセルファイルを加工して、最終的にテキストファイルを生成することです。 テキストファイルをつくったあと、保存するタイミングでエラーがおきるようです。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

SAVEASの必須引数、2000と2003で違ってなかったですか? VBAはバージョンによって結構引数が違ってますよ。

naoko5138
質問者

お礼

早速ありがとうございます。 バージョンが違うと引数も違うとは存じませんでした。 それをヒントに調べましたところ、無事思いとおりになりました。 本当にありがとうございました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 両方のバージョンで確認しました。ただ、Excel 2000 でも、正しくコードが書ければ、そのような問題は発生しません。しかし、一度は、教わらないと分かりません。私も、書き方の方法は、入門時に教わりました。ただ、今回のように、オブジェクトそのものの違いは、私自身、知りませんでした。マクロの書き方自身は、Excel2000も、上位バージョンも変わりません。 Help を見ると、Worksheets.Add でコピーするように書かれていますが、今回は、特例で、以下のSheet のCopyをしたら良いです。 今回は、終了方法が書かれていません。この後、ご自身で分からなければ、補足かお礼の中で、お尋ねになってください。 Sub TestSave()  Sheets("TXT").Copy  ActiveWorkbook.SaveAs _     FileFormat:=xlCurrentPlatformText, _     Filename:=ThisWorkbook.Path & "\今月.txt" End Sub

naoko5138
質問者

お礼

具体的にコードをつけていただき、ありがとうございます。 無事解決することができました。 基本をしっかり身に着けずにつくってしまったため、 反省です。 ありがとうございました。

  • jam-best
  • ベストアンサー率27% (94/344)
回答No.3

直接的な解決にはならないと思いますが、 Sheets("TXT").SaveAs ~ Filename:=ThisWorkbook.Path & "\今月.txt" ↑保存するものはSheetではなくWorkBookなりじゃないでしょうか?

naoko5138
質問者

お礼

ありがとうございます。 2000ではなぜかSheetでも流れから無事に保存できていたのですが、 これはWorkBookにするべきだとわかりました。 ありがとうございます。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

引数FileFormatの値をxlTextにしてみてください。 FileFormat:=xlText   外しましたらご容赦願います。  

naoko5138
質問者

お礼

ありがとうございます。 具体的に値を教えていただき、感謝いたします。

関連するQ&A

  • VBAで名前を付けて保存

    テキストファイルをエクセル出力する処理を考えております。 テキストファイルを開き、名前をつけて保存する処理が上手くできません。 シート1のある2つのセルに入力パスと出力パスが設定されているとします。 例えばcells(4,4)に入力パスが設定されており(¥~~~.txt) cells(6,4)に出力パスが設定されており(¥~~~xls) 上記のような状態とします。 cells(4,4)にあるテキストファイルを開き、 それを拡張子をエクセルにしてcells(6.4)にある出力先に名前をつけて保存をしたいのです。 オープンする場合は Workbooks.OpenText Filename:=Workbooks("○○.xlsm").Sheets(1).Cells(4, 4).Value & ".TXT" で上手くいきました。 しかし保存の際に ActiveWorkbook.SaveAs Filename:=Sheets(1).Cells(6, 4).Value & ".xls" で実行するとエラーがでてしまいます。 どうすれば良いでしょうか。

  • 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が開いたままにしたい) 以上、宜しくお願いします。

  • エクセルのマクロ

    あるエクセルのブック内のシートをdドライブに自動的にunicodeのタブ区切りテキストで保存するマクロを作成しています。コードは for i = 1 to 10 Sheets(i).Select f_name = "d:\" + Trim(Str(i)) + ".txt" ActiveWorkbook.SaveAs Filename:=f_name,_ FileFormat:=xlUnicodeText, CreateBackup:=False next i こんな感じです。 しかしこれを実行するとイルカが 'aaa.txt'にアクセスできません。ファイルは読み取り専用であるか、または読み取り専用の場所にアクセスしようとしています。または、サーバー上に保存されているドキュメントから応答がありません。 と言うメッセージを出し、そこでキャンセルボタンを押すと 実行時エラー'1004': 'SaveAs'メソッドは失敗しました。'_Workbook'オブジェクト というメッセージが出ます。さらにデバックを押すと、プログラムコードの ActiveWorkbook.......の行で止まります。 環境はwindows2000、excel2000です。 何か足りないコードがあるのでしょうか? よろしくお願いします。

  • Excel2007 実行時エラー1004

    宜しくお願い致します。 Excel2003環境時に作成したマクロを2007環境で動作させると実行時エラー1004が返ってきます。 対策をお教えいただきたくお願いします。 (1)Excelで表作成 (2)作成した表を所定パスにText形式で保存するマクロを実行  【Excel2003でのソース】 ActiveWorkbook.SaveAs filename:=(ファイルパス) & ".txt" _ , FileFormat:=xlText (3)FileFormatの箇所で実行時エラー1004(SaveAsメソッドは失敗) Excel2007で上記部分に下位互換市内部分が含まれているのだとおもいますが、対策が全く分かりません。 お知恵をお借りしたくお願いします。

  • VBA 新規ファイルを元ファイルと同じ場所に保存する方法

    こんにちは。VBA初心者です。 エクセルファイルのシートを、いろいろ行を増やしたり計算を自動にするようにして、 最後にテキスト形式にするためのマクロをつくっております。 元のエクセルファイルの対象のシートをコピーして、新しいファイルを作成しペースト→保存→ファイルを閉じるところまでなんとかできました。 現在、下記のコードで新しいファイルは「マイドキュメント」に保存されていますが、元のエクセルファイルと同じ場所に保存したいのですが、どのようにコードを書けばよろしいでしょうか。 教えていただけますと幸いです。宜しくお願い申し上げます。 Sheets("TXT").Copy Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:="今月.txt" With Workbooks("今月.txt") .Saved = True .Close

  • Excel : OpenTextメソッドが正常に動作しないのはなぜ?

    下記のようなマクロを作りました。 Sub sample() FileName = ThisWorkbook.Path & "\test.txt" Workbooks.OpenText FileName:=FileName, Comma:=True ActiveWorkbook.SaveAs FileName:=FileName, FileFormat:=xlCSV ActiveWorkbook.Close End Sub test.txt には次のテキストが書かれています。 "あ"," あ " 上記のマクロを実行すると、テキストの中身は次のようになってしまいます。 """あ"",""",あ,"""" 本来であれば、テキストの内容には変化が全くないはずだと思います。 原因が不明なのですが、マクロの動作確認をしたところ、 OpenTextメソッドでテキストを開いたときにすでに、 カンマの位置で区切られてセル内に入っていませんでした。 どのようにすればOpenTextメソッドは希望する動作をしてくれるのでしょうか?

  • EXCELのVBAのコマンドボタンの動作について

    EXCELのVBAでコマンドボタンを押したとき、あるテキストを、単にテキストとして開く為に、以下のコーディングをしました。 しかし、「shell」コマンドは実行形式でないといけないようで、うまく行きません。どなたか、判る方いらっしゃいますか? --------------------------------------------- wk_path = ThisWorkbook.Path & "\memo1.txt" wk_rc = Shell(wk_path, vbNormalFocus) --------------------------------------------- (エラーコード:メッセージ) 5:プロシジャーの呼び出し、または引数が不正です。

  • エクセルVBA 実行時エラーって出るんですけど・・・;;

    いつもお世話になってます またまた質問載せさせていただきます。 マクロで2つのファイルをSaveasで各保存をした後に、 エクセルを閉じると、 実行時エラー'1004' WorksheetクラスのSelectメソッドが失敗しました と出るのです。 デバックボタンもグレーのままなので、デバックは使えないし、そのまま終了をかけると、エクセル自体が閉じられるので、 さっぱり何がなにやらって感じなのです。 どなたか分かる方いらっしゃいますでしょうか??

  • VBAのFileFormatで悩んでいることがあるので助けていただけないでしょうか?

    エクセルファイルを通常のテキスト形式にしたいのですがタブ区切りが入ってしまうので困っています。 そこで変換時なのですがFileFormatをつかっています。 そのときxlCSVはうまくいくのですがxlTextWindowsがうまくいきません。 xlCSVから変えただけなのですが・・・ 実行時エラー '1004': 'SaveAs' メソッドは失敗しました: '_Workbook' オブジェクト となってしまいます。 何がいけないのか見当がつきません。 通常のXLSからの変換です。 テキストファイルにしたとき,""カンマやダブルコーテーションが勝手に入り困っています。 何も入らないようにしたいです。

  • VBA 新規作成したファイルを開くときにエラー

    すみません、助けてください。 Excel 2007のVBAでActiveWorkbook.SaveAsを使って 新規にExcelファイルを生成するものを作成しているのですが、 新たに作成したExcelファイルを開くときにエラー(警告)が出てしまいます。 (ファイル自体は開けるのですが。。。) ソースは以下です。 ------------------------------------------------------------ ' シート枚数を指定 Application.SheetsInNewWorkbook = 3 Workbooks.Add ' 上書き保存 Application.DisplayAlerts = False ' ファイル名を指定して保存 ActiveWorkbook.SaveAs (ThisWorkbook.Path + "\" + "新しいファイル.xls")

専門家に質問してみよう