VBAはじめたばかりですが、宜しくお願いいたします。
エクセル2000ではエラーがでませんが、2003の場合次のようなエラーがでます。

実行時エラー1004
アプリケーション定義またはオブジェクト定義エラーです

「デバック」を押して、コードをみますと、次の行に黄色いマーカーがつきます。
Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt"

マウスオーバーすると、次の2つが表示されます。
xlCurrentPlatformText= -4158
ThisWorkbook.Path ="C:\Document&【現在このファイルがあるパス】"

解決方法はありますでしょうか。

ご存知の方、いらっしゃいましたら、なにとぞ宜しくお願いいたします。

このマクロの実行目的は、あるエクセルファイルを加工して、最終的にテキストファイルを生成することです。
テキストファイルをつくったあと、保存するタイミングでエラーがおきるようです。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

SAVEASの必須引数、2000と2003で違ってなかったですか?


VBAはバージョンによって結構引数が違ってますよ。
    • good
    • 0
この回答へのお礼

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

本当にありがとうございました。

お礼日時:2009/05/20 17:32

こんにちは。



両方のバージョンで確認しました。ただ、Excel 2000 でも、正しくコードが書ければ、そのような問題は発生しません。しかし、一度は、教わらないと分かりません。私も、書き方の方法は、入門時に教わりました。ただ、今回のように、オブジェクトそのものの違いは、私自身、知りませんでした。マクロの書き方自身は、Excel2000も、上位バージョンも変わりません。

Help を見ると、Worksheets.Add でコピーするように書かれていますが、今回は、特例で、以下のSheet のCopyをしたら良いです。

今回は、終了方法が書かれていません。この後、ご自身で分からなければ、補足かお礼の中で、お尋ねになってください。

Sub TestSave()
 Sheets("TXT").Copy
 ActiveWorkbook.SaveAs _
    FileFormat:=xlCurrentPlatformText, _
    Filename:=ThisWorkbook.Path & "\今月.txt"
End Sub
    • good
    • 0
この回答へのお礼

具体的にコードをつけていただき、ありがとうございます。

無事解決することができました。
基本をしっかり身に着けずにつくってしまったため、
反省です。

ありがとうございました。

お礼日時:2009/05/20 17:37

直接的な解決にはならないと思いますが、


Sheets("TXT").SaveAs ~ Filename:=ThisWorkbook.Path & "\今月.txt"
↑保存するものはSheetではなくWorkBookなりじゃないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

ありがとうございます。

お礼日時:2009/05/20 17:36

引数FileFormatの値をxlTextにしてみてください。



FileFormat:=xlText
 
外しましたらご容赦願います。
 
    • good
    • 0
この回答へのお礼

ありがとうございます。

具体的に値を教えていただき、感謝いたします。

お礼日時:2009/05/20 17:34

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエアコン(National製)のエラーコードの意味

現在使っているエアコンが何らかエラーで止まってしまいました。
取説を読んでエラーコードを調べました。

製  品  名 : National製 CS-S255A-W
エラーコード : H16

取説には、エラーコードの意味の記載はなく、「販売店に連絡」と書いてありました。

修理依頼する前に、このエラーコードの意味が知りたかったのですが、
調べても情報が得られませんでした。

ご存知の方がいらっしゃったら、教えて頂きたくお願い致します。
修理費用等の補足情報も頂ければ幸いです。

Aベストアンサー

エラーコード一覧表がありました。
最低でも、2万円くらいはかかりそうですね。

http://synergy23.web.fc2.com/sizen.html#sizen06
http://syuuri.jp/qa_air_78.html

Qコンパイルエラー ユーザ定義型は定義されていません。

アクセス2003です。
とあるサンプルファイルをダウンロードしたのですが

Private objDrSB(1 To 100) As DirectSoundSecondaryBuffer8

の部分が
「コンパイルエラー
ユーザ定義型は定義されていません。」
となります。

参照設定のどこにチェックを入れればいいのでしょうか?

Aベストアンサー

ググればすぐに見つかる。
http://home.att.ne.jp/zeta/gen/excel/c04p04.htm

QVB2005ExpressEditionでのUnlha32.dllのエラーコードの出し方

現在VB2005ExpressEditionでUnlha32.dllを使ってファイルの解凍をしようとしています
しかし、失敗するのでエラーコードを出させるようにしてみました
でも、出てきたのはどうやらエラーコードとは違うもののようなのです
Unlha32.dllのエラーコードの出し方が間違っているようなのでエラーコードの出し方を教えてください
ソースです↓(半角スペースは全角スペースにしてあります)
Public Class Form1
  Private Declare Function Unlha Lib "Unlha32.dll" (ByVal CmdLine As String) As Long
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox(Unlha("e C:\test.lzh -x1a1 -c C:\ *.*"))
  End Sub
End Class

現在VB2005ExpressEditionでUnlha32.dllを使ってファイルの解凍をしようとしています
しかし、失敗するのでエラーコードを出させるようにしてみました
でも、出てきたのはどうやらエラーコードとは違うもののようなのです
Unlha32.dllのエラーコードの出し方が間違っているようなのでエラーコードの出し方を教えてください
ソースです↓(半角スペースは全角スペースにしてあります)
Public Class Form1
  Private Declare Function Unlha Lib "Unlha32.dll" (ByVal CmdLine As String) As Long
 ...続きを読む

Aベストアンサー

引数の数もですが、関数の戻り値のデータ型も違うのではありませんか?

データ型が違えば、正しい値(つまり正しいエラーコード)は出てきませんよ。

宣言を見直して、正しく直してください。

Q\_vti_pvt\service.lckが開けないため、書き込めません。

新旧二つのパソコンがLANでつないであります。

新:XP+officeXP(FRONTPAGEなし)
旧:98SE+office2000(FRONTPAGEあり)

これまで旧でweb作成をしていたのですが、旧の外付けだったHDを新に接続しました。

「MyWeb」もこのHDにあります。そこで、旧から新の外付けであるこのHDの「MyWeb」にあるwebを開こうとしたら、タイトルのようなエラーメッセージが出て開けません。

新の方からはこのwebは開けます。

また、LANによるファイルの共有は問題なく出来ます。

XP用のFRONTPAGEを購入せずに、旧でそのままweb作成をしたいのですが、このエラーを解決する方法はあるのでしょうか?

面倒なお尋ねで申し訳ありませんが、よろしくご教示下さい。

Aベストアンサー

以下のサイトが参考になればよいのですが・・・

参考URL:http://support.microsoft.com/kb/303255/ja

Qワードでクリップアートをクリックするといきなりエラーコードが出る

クリップアートのクリップオーガナイザが不具合になったのでoffice2003を再インストールして再起動したました。しかし,ワードを起動してクリップアートをクリックするといきなり「操作を完了できません。エラーコード 0x80040231」と出ます。どうなっているのでしょう。このエラーコードの検索の仕方も分かりましたら教えてください。

Aベストアンサー

こんばんは。

エラーコードは違いますが、以下の情報が近いように思います。

[OFF2003] Office ドキュメントまたは文書にクリップ アートを挿入するとき、エラー メッセージ "操作を完了できません。指定したプロシージャが見つかりません。エラーコード: 0x8007007f" が表示される

http://support.microsoft.com/kb/884424/ja

[Clip2002] エラー メッセージ : "DLL でエラーが発生しました" または "操作を完了できません"
http://support.microsoft.com/kb/302375/ja

「MDAC をインストールする」という部分に該当するのではないかと思いますが、

ただ、ピッタリ同じではないので不安が残ります。同じエラーコードが、検索では引っかかりませんでした。

http://support.microsoft.com/default.aspx?scid=kb;ja;301202
MDAC のバージョンを確認する方法

とりあえず、こちらで、MDAC のバージョンをチェックしてみるのが良いのではないでしょうか? それを、ひとつの判断材料にしてみてくださいませんか?
もし、実行するだけの勇気がないようでしたら、直接、Microsoft のサポートをお受けになるのもよいかもしれません。

こんばんは。

エラーコードは違いますが、以下の情報が近いように思います。

[OFF2003] Office ドキュメントまたは文書にクリップ アートを挿入するとき、エラー メッセージ "操作を完了できません。指定したプロシージャが見つかりません。エラーコード: 0x8007007f" が表示される

http://support.microsoft.com/kb/884424/ja

[Clip2002] エラー メッセージ : "DLL でエラーが発生しました" または "操作を完了できません"
http://support.microsoft.com/kb/302375/ja

「MDAC をインストールする...続きを読む

Qcopy C:\Documents and Settings\*.*が出来ない

C:\Documents and Settingsは通常のフォルダではないのですか? copy C:\Documents and Settings\*.* c:\が出来ません。
どの様に指定するのか教えてください。

Aベストアンサー

フォルダやファイル名の Path にスペースが含まれていると
そこで命令文の区切りとして解釈されてしまうのでダブルクォーテーションで
括って、copy "C:\Documents and Settings\*.*" c:\
では如何でしょう?

ただ、当方ではcopy C:\Documents and Settings直下には
ファイルが有りませんので、結局何もコピーできませんでしたけど・・
フォルダごとのコピーなら、Xcopy を使われては?

Qエラーコード-10814

エラーコード-10814ってどういう意味ですか?
下記のような状況で出てしまいます。何が悪いのでしょうか。

1)OS9.2/ファイルメーカープロver4で使っていた書類をOS X 10.3.9/ファイルメーカープロver6で使おうとするとこのエラーが出て開けない。

2)OS9.2/ソロライターの書類をOSX 10.3.9/MSword2004で強制的にテキストだけでも開こうとするとやはり同じエラーコードが出る。

よろしくご教授ください。

Aベストアンサー

エラーコード表を参照していないので不確かですが。
この文面から想像すると
『コンバート』ファイルが不足していると思われます。
通常はどちらも開く事は可能と記憶しています。
*ソロライターの書類は『テキストファイル』です。

QAccess2002 Insert関数が未定義関数となり、エラー

XP Access2002です。

ランキング形式のテーブルから、クエリを作成しています。

クエリでの表示は A1 となっているのですが、それにハイフン「-」を入れて、A-1としたいです。
「A1」は、テーブル名:「ランク」内のフィールド名:「順位」

SQLビューで
insert(ランク!順位,2,0,'-') AS ランキング
としたのですが、結果は、未定義関数と出てしまいます。
InsertをReplaceに変更したら、今度はアラーとは出ませんが、表示画面では、エラー表示になってしまいます。

構文が違うのでしょうか?
SQLを使っていて、『未定義』とアラートが出たのは初めてですので、戸惑っています。

Aベストアンサー

Excel、或いはその他のプログラミングなどをされた経験がある方でしょうか。

> SQLを使っていて、『未定義』とアラートが出たのは初めてですので、戸惑っています。

Accessには、Insertという関数がない(=定義されていない)ため、ご質問のエラーが
発生しています。


また、Excelのワークシート関数のReplaceとAccessのReplace関数とでは、引数の
内容が異なります。

【Excel】
REPLACE(文字列, 開始位置, 文字数, 置換文字列)
http://office.microsoft.com/ja-jp/excel/HP100625741041.aspx
→位置と文字数を指定

【Access】
Replace(文字列, 検索文字列, 置換文字列, (開始位置, 文字数, 比較モード))
http://office.microsoft.com/ja-jp/access/HA012288981041.aspx
→置換前の文字と置換後の文字を指定(おおまかには)

第4引数まで指定した場合、Excelの方では第4引数には文字列型のデータが
指定されますが、Accessの方では数値型が要求されますので、恐らくそこで
型不一致によるエラーが発生しているのではないかと推測します。

念のため、上記の引数をご確認の上、式を見直してみてください。


・・・ただ、AccessのReplace関数では、今回の目的は達せられないのではないかと
いう気がします(汗)
(但し詳細未検討)

Insert関数の第2引数に「2」を指定していることからすると、恐らくハイフンは常に
2番目に追加、ということだと思いますので、Left関数とMid関数を組み合わせでも
いけるかと思いますので、参考まで:

Left(ランク!順位, 1) & "-" & Mid(ランク!順位, 2) As ランキング

※Excelのワークシートと違い、「&」の前後には半角スペースが必須ですので、
  合わせてご注意下さい。

Excel、或いはその他のプログラミングなどをされた経験がある方でしょうか。

> SQLを使っていて、『未定義』とアラートが出たのは初めてですので、戸惑っています。

Accessには、Insertという関数がない(=定義されていない)ため、ご質問のエラーが
発生しています。


また、Excelのワークシート関数のReplaceとAccessのReplace関数とでは、引数の
内容が異なります。

【Excel】
REPLACE(文字列, 開始位置, 文字数, 置換文字列)
http://office.microsoft.com/ja-jp/excel/HP100625741041.aspx
→...続きを読む

Qエラーコードについて

オラクル初心者で、初めて質問します。
3点ほど、質問があります。どなたか宜しくお願いします。

(1)SELECT文発行時、抽出件数が0件(NotFound)、またはUPDATE文発行時、更新件数が0件の場合って、
エラーコードはORA-00000(正常終了)で合ってますか?

(2)エラーコードのリファレンス読んでたら、ORA-00001はUpdate、もしくはInsert時に一意制約に反しているとありますが、
Insert時は分かるのですがUpdate時ってどういう条件でORA-00001が出るのでしょうか?


(3)正常終了した場合も含めてエラーコードを確認することが可能なツール(フリーがBEST)とかご存知でしたら教えてください。

以上です。どうぞ宜しくお願いします。

Aベストアンサー

(1)SELECT文発行時、抽出件数が0件(NotFound)、またはUPDATE文発行時、更新件数が0件の場合って、
エラーコードはORA-00000(正常終了)で合ってますか?

ORA-00000というのは見たことがありませんのでコメントのしようがありません。マニュアルに記載がありましたか?

(2)エラーコードのリファレンス読んでたら、ORA-00001はUpdate、もしくはInsert時に一意制約に反しているとありますが、
Insert時は分かるのですがUpdate時ってどういう条件でORA-00001が出るのでしょうか?

例を示しておきます。

CREATE TABLE sample (
col varchar2(1)
);

CREATE UNIQUE INDEX col_idx ON sample (col);

INSERT INTO sample VALUES ('a');
INSERT INTO sample VALUES ('b');
COMMIT;

UPDATE sample SET col = 'a' WHERE col = 'b';

これで col = 'a' のデータは既に存在するので一意制約違反が発生するでしょう。

(3)正常終了した場合も含めてエラーコードを確認することが可能なツール(フリーがBEST)とかご存知でしたら教えてください。

開発ツール (接続方法。ODBC、JDBC等) にもより、それを記載されていないため、回答のしようがありません。

(1)SELECT文発行時、抽出件数が0件(NotFound)、またはUPDATE文発行時、更新件数が0件の場合って、
エラーコードはORA-00000(正常終了)で合ってますか?

ORA-00000というのは見たことがありませんのでコメントのしようがありません。マニュアルに記載がありましたか?

(2)エラーコードのリファレンス読んでたら、ORA-00001はUpdate、もしくはInsert時に一意制約に反しているとありますが、
Insert時は分かるのですがUpdate時ってどういう条件でORA-00001が出るのでしょうか?

例を示しておきます...続きを読む

Qマクロ実行時のエラー処理について

VBAのエラー処理の方法について教えて下さい。
エクセル2007を使用しています。
VBAでシートの名前を以下のように変更しようとしています。

シート名1 ← "1"
シート名2 ← "2"
シート名3 ← "3"

記述内容は以下の通りです。
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
On Error GoTo Err1
 For i = 1 to 3
  Sheet(i).Name = i  'Sheet(i)の名前を変数"i"に変更する。
Err1:
  Sheet(i).Delete   '上記処理でエラーが発生した場合はそのシートを削除する。
 Next i
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
 以上の処理を実行しようとした場合、同じ名前の既存シートが存在していたり、シート名に含まれてはいけない文字列が含まれていたりした場合、エラーが発生しますが、On Errorステートメントを使用してエラーが発生した場合の処理を実行したいのですが、1回目のエラーについてはOn Errorが働くのですが、2回目になるとOn Errorが働きません。
 2回目以降のエラーも1回目と同様に処理したいのですが、コードの記述の変更方法や又は他の処理方法を教えて下さい。

エラーの種類は以下の通りです。
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
実行時エラー'1004':

シートの名前をほかのシート、Visual Basicで参照されるオブジェクト ライブラリまたは
ワークシートを同じ名前に変更することはできません。
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
以上。

尚、On Error Resume Nextは処理を無視するだけなので使用したくありません。

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

VBAのエラー処理の方法について教えて下さい。
エクセル2007を使用しています。
VBAでシートの名前を以下のように変更しようとしています。

シート名1 ← "1"
シート名2 ← "2"
シート名3 ← "3"

記述内容は以下の通りです。
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
On Error GoTo Err1
 For i = 1 to 3
  Sheet(i).Name = i  'Sheet(i)の名前を変数"i"に変更する。
Err1:
  Sheet(i).Delete   '上記処理でエラーが発生した場合はそのシートを削除する。
...続きを読む

Aベストアンサー

>尚、On Error Resume Nextは処理を無視するだけなので・・・
あえて使ってみました、如何ですか?
On Error Resume Next
For i = 3 To 1 Step -1
  Sheets(i).Name = i 'Sheet(i)の名前を変数"i"に変更する。
  If Err Then
    Application.DisplayAlerts = False
    Sheets(i).Delete
    Err.Clear
  End If
Next i
Application.DisplayAlerts = True
On Error GoTo 0


人気Q&Aランキング

おすすめ情報