• ベストアンサー

エラー5:プロシージャの呼出しまたは引数が不正です

お世話になります。 以前解決しました http://okwave.jp/qa/q7131441.html の回答の下の方に .add type:=xlvalidatelist, formula1:=left(s, len(s)-1) とありますが これがよく理解できません。いくつか調べた後の素人考えで 「入力規則に検索済ファイル名の左から文字数-1」?かな?と。 マクロを実行するとこの行が原因で"時々"エラー5を返します。 「プロシージャの呼出しまたは引数が不正です」。 必ずではないのですが7割程度の確立で出ます。 上記の説明だけでエラーが理解できましたら対処案をご教示ください。 ちなみにエクセル2002と2003で確認しています。

  • OKBob
  • お礼率94% (97/103)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

「指定のフォルダ」の指定が間違っていると,そのエラーが起こります。 また,指定のフォルダが正しくてもそこに目的のファイルが無いと,やはりそのエラーが起こります。 マクロで指定した「ファイルの種類(拡張子)」が実は間違っていた場合にも,そのエラーになります。 では暫定的に,エラーが起きる.addの行の一つ前に if s = ""then exit sub と追記し,(プルダウンに載せるべき正しい)ファイルが拾えなかった場合は,入力規則を設定させないようにしましょう。

OKBob
質問者

お礼

ご指摘の通り、空フォルダが原因だったようです。 作業簡素化の為に入力規則の設定は必要でしたので 対策として、リストにあえて常時表示するメッセージ (「この中から選んでください」みたいなもの)を その拡張子で作成しておく事にしました。 ありがとうございました。

OKBob
質問者

補足

早々に回答頂きありがとうございます。 今はもう帰路で確認できないのですが、 確かに指定ファイル(拡張子)が無い時や、フォルダが空の場合があります。(別ソフトで作成された3種(拡張子)のファイルが混在し、所望ファイルのみをエクセル化して別フォルダへ保存したらその元ファイル1種は削除しますの) この時におきているという事ですね? 明日確認してみます。 ただ、1回エクセルを閉じて再起動させたらエラーが出なかった時もあった(・・・確か?)のが少し気になります。 明日、このパターンも含め色々試してみます。ありがとうございます。

関連するQ&A

  • 「プロシージャの呼び出しが不正」という意味を教えてください。

    問題機種は、ThinkPad S30で、OSはWindows2000です。インターネットへの接続を行なおうとすると、次のエラーメッセージが出てしまいます。【実行時エラー”5” プロシージャの呼び出し、または引数が不正です。】 そして<OK>をクリックすると、エラーメッセージが現われて、瞬間で消えてしまいます。Office2000のCD-ROMで、<修復>、<再インストール>しても改善しません。この質問は、別PCからアクセスしてます。 どなたかアドバイスをよろしくお願いします。

  • "プロシージャの呼び出し、または引数が不正です"というエラーが出ました

    "プロシージャの呼び出し、または引数が不正です"というエラーが出ました。原因がよく分かりませんので、誰か分かりますか? Dim ExcelPath As String, fName As String Dim lLen As Long, start As Long Dim filetxt Dim bArray() As Byte fName = Workbooks.Application.ActiveWorkbook.Path & "\ExcelDoc.txt" lLen = FileLen(fName) Open fName For Binary As #1 ReDim bArray(0 To lLen) Get #1, 3, bArray Close #1 filetxt = bArray ExcelPath = Left(filetxt, InStr(1, filetxt, Chr(13)) - 1) ==>ここでエラーが出ました。 使っている環境は: WinXP SP3 Microsoft Excel 2003 SP3

  • VB6 エラー「プロシージャの呼び出し、または引数が不正です。」につい

    VB6 エラー「プロシージャの呼び出し、または引数が不正です。」について いつもお世話になっております。 早速ですが、Form_Activateイベント内でこのエラーが出力されていることを 確認いたしました。 ただし、フォームアクティブ時に自動的に流れる時はエラーは出力されず、 明示的にForm_Activateイベント呼び出して動かす時にだけ出ています。 そこで質問です。 (1)Form_Activateイベントを明示的に呼び出すことはプログラム上問題がありますか? (2)Form_Activateイベントでこのエラーが発生する事例などがあれば教えてください。 (3)画面がアクティブになった際にForm_Activateイベントを明示的に呼び出した場合、  エラーが起こる事はありますか? (4)Form_Activateイベント内に限らず、このエラーが出る事例などがあればお教えください。 始めたばかりで低レベルな質問でもうしわけありませんが、よろしくお願いします。

  • Wordで『プロシージャの呼び出し、または引数が不正です。』

    Wordがいつの間にか正常に起動しなくなりました。 起動すると、 >実行時エラー '5': >プロシージャの呼び出し、または引数が不正です。 というエラーメッセージが出て、メニューバー、ツールバーが全く表示されない状態で立ち上がります。 とりあえずエラーメッセージで検索などしてみて、オフィスの削除、再インストールなども試してみましたが改善しませんでした。また、WORDフォルダの中のSTARTUPフォルダの中身を削除するという方法が書いてあるページがありましたので、それも確認しましたが、特に何も入っていませんでした。 どなたか原因と対策をご存知の方、いらっしゃいませんでしょうか。 OSはWindowsMe、Wordのバージョンは2000です。 よろしくお願いいたします。

  • Word起動時のエラー「実行時エラー'5'」

    実家のPCのエラーのご相談です。 あと1時間ほどで帰宅するのでその前にアドバイスをいただけると、、、 ◆トラブル内容: ワードを立ち上げようとすると Microsoft Visual Basicのエラー表示がでます。 このエラーが出ないようにしたいのですが、 方法がわからず、お力添えをお願いします。 ◆エラー内容: 実行時エラー'5': プロシージャの呼び出し、または引数が不正です。 終了およびヘルプボタンのみ有効です。 ヘルプボタンを押すとヘルプの該当項目が表示されます。 ◆ヘルプの内容: プロシージャの呼び出し、または引数が不正です。(Error 5) 呼び出しの一部が完成できません。エラーの原因と対処方法を次に示します。 引数が許容値の範囲を超えている可能性があります。たとえば、Sin 関数で扱える値の範囲は決まっています。2,147,483,648 未満の値は有効ですが、2,147,483,648 ではエラーになります。 引数に指定できる値の範囲を確認します。 現在のプラットフォームで無効のプロシージャを呼び出そうとするときにも、このエラーが発生します。たとえば、Microsoft Windows または Macintosh のみで使用できるプロシージャなどがあります。 プロシージャについてのプラットフォーム固有の情報を確認します。 詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。                           以上コピペ終わり マクロで見たことのあるエラー表示ですが、エクセルマクロでは デバッグで凌いだり、不要なマクロはモジュールの解放等と、多少の 対処法を学んだのですが、ワードマクロはまったく未経験でヘルプの内容も 理解出来ません。 親孝行の真似事でも出来れば、と質問致しました。 御力添えをお願いします。

  • 入力規則 日付をリストのプルダウンで選択したい

    エクセルの入力規則をVBAでやる時に日付をリストのプルダウンで選択したいのですが Sub test() With Range("A1").Validation .Delete .Add Type:=xlValidateList, Formula1:="2014/1/1,2014/1/2" End With End Sub をすると、 1/1/2014 1/2/2014 にとプルダウン上で表示されてしまい、なおかつ文字列になってしまいます。 .Add Type:=xlValidateList, Formula1:=#1/1/2014# & "," & #1/2/2014# .Add Type:=xlValidateList, Formula1:=Format(#1/1/2014#, "yyyy/mm/dd") & "," & Format(#1/2/2014#, "yyyy/mm/dd") これでも同じでした。 2014/1/1 2014/1/2 と表示させるにはどうすればいいでしょう?

  • Changeプロシージャでのトラブル?

    以下のコードでトラブル中です。 Private Sub text1_Change() If Len(text1.Text) = 6 Then text2.SetFocus End Sub 1:プログラムを実行し、手動でtext1に6文字入力すると一切のエラーは発生せずtext2にフォーカスが移ります。 2:プログラムを実行し、コードでtext1に6文字代入すると実行時エラー5(プロシージャの呼出、または引数が不正です。)が発生し、フォーカスは移りません。 いずれの場合もtext2のEnabledはtrueで、入力文字は半角数字です。 原因がわからない為、コードでの文字代入ができなくて困っています。 なぜなのかまったくわかりません。 よろしくお願いします。

  • エクセルVBA イベントプロシージャに引数を渡せま

    お世話になります。 エクセル2003/XP 使用です。 イベントプロシージャに引数を渡せまるかどうか教えていただけますでしょうか? 下記のコード中の変数mysheetnameを ユーザーフォーム、→ CommandButton1のプロシージャに 引数として渡して行きたいのですが、 実行すると、一番最初のWorkbook_SheetBeforeRightClickの時点で、 コンパイルエラー:  プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。 とエラー表示されます。 イベントプロシージャに引数を渡すことはできますでしょうか? ---------- ThisWorkBook内 ---------- Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) mysheetname = ActiveSheet.Name UserForm1.Show (mysheetname)     '←変数mysheetnameの値をユーザーフォームに渡したい。 End Sub ---------- ユーザーフォーム ---------- Private Sub UserForm_Initialize(ByVal mysheetname As String ) 処理 End Sub Private Sub CommandButton1_Click(ByVal mysheetname As String ) 処理 End Sub ’--------- ここまで 引数について少し理解し始めたばかりの者です。 よろしくお願いします。

  • Record-Now DX の書き込みエラーが出て困ってます。「プロシージャの呼び出し、または引数が不正です」とは?

    LaVie L LL500/2D(XP)を使用しているのですが、Record-Now DXでCD-RWへの書き込みが毎回失敗します。 その際、「CD Mastering Application を終了します」とエラーが出てRecord-Now DXが操作不能になり(閉じられなくなる)、タスクマネージャーで強制的に終了さすと、「実行時エラー”5” プロシージャの呼び出し、または引数が不正です」と出ます。 XPでそのまま焼こうとしても書き込みエラーがでますし、他のフリーソフト(DeepBurner・ディスクメディエーター呉葉等)もためしましたが、どうしてもエラーが出ます・・・疲れ果てました。長時間待って失敗、長時間待って失敗の繰り返しで・・・ ここまで失敗するとは、いったい何が問題なのかわかりません。 いままではそんな事はなかったのですが、つい最近再セットアップをしてその影響だっていうのはなんとなく感じています。 どなたかおわかりになるでしょうか。 XPのSP1を削除したからかな?などと考えてアップデートしようとしましたが、もうSP1ってないんですね・・・? もし解決方法があるのなら、どなたかお知恵をおかしください。

  • プロシージャの呼び出し、または引数が不正です・・・

    お世話になります。 どなたかお助けください。。 現在、Excel2003のVBAで、シートに配置したテキストボックスに、外部テキストファイルから値を引っ張ってきて、表示するプログラムを書いているのですが、下記の「buf = Space(FileLen(TargetFile(i)))」この部分で 「プロシージャの呼び出し、または引数が不正です」とエラーが出てしまいます。 まったく何が悪いのか検討が付かずこまっています…。 よろしくお願いします。 Private Sub Workbook_Open() Dim 省略… Set SH1 = Worksheets("テスト") TargetFile1 = ThisWorkbook.Path & "\..\..\..\..\..\..\sample\a\b\c" TargetFile2 = ThisWorkbook.Path & "\..\..\..\..\..\..\sample\a\b\d" TargetFile3 = ThisWorkbook.Path & "\..\..\..\..\..\..\sample\a\b\e" TargetFile = Array(TargetFile1, TargetFile2, TargetFile3) '<一つ上の階層のフォルダ名を取得> myParentFolder = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\", -1, vbTextCompare)) '<ファイルのベースネームを取得> Set FSO = CreateObject("Scripting.FileSystemObject") myParentF = FSO.GetFolder(myParentFolder).ParentFolder myParentF2 = FSO.GetFolder(myParentF).ParentFolder myParentF3 = FSO.GetFolder(myParentF2).ParentFolder BaseName0 = FSO.GetBaseName(myParentF3) BaseName1 = FSO.GetBaseName(myParentF2) BaseName2 = FSO.GetBaseName(myParentF) BaseName3 = FSO.GetBaseName(myParentFolder) BaseName4 = FSO.GetBaseName(ThisWorkbook.Path) '<ページ情報を外部テキストから読み込み> '※値が空の場合のみ再度読み込み For i = 0 To 2 If SH1.OLEObjects("TextBox" & i + 1).Object.Value = "" Then n = FreeFile buf = Space(FileLen(TargetFile(i))) Open TargetFile(i) For Binary As #n Get #n, , buf Close #n If i = 0 Or i = 1 Then SH1.OLEObjects("info" & i + 1).Object.Value = buf Else SH1.OLEObjects("info" & i + 1).Object.Value = BaseName0 & " > " & BaseName1 & " > " & BaseName2 & " > " & BaseName3 & " > " & BaseName4 & buf End If End If Next i Set FSO = Nothing End Sub

専門家に質問してみよう