今回は、ExcelVBAによるプログラム実行中に起こる次の実行時エラー「プロシージャの呼び出しまたは引数が無効です 。」このエラー原因とその対処法について解説していきましょう。
「プロシージャの呼び出しまたは引数が無効です 。」のエラーが起こるのはどんな時?
このエラーが起こるのは、下記のような事例の時に起こります。
同じディレクトリ内のファイルを一括で読み込む場合
この処理は、同じディレクトリ内のファイルを一括読み込む際に、本来きちんと記述されているプログラムなはずなのに、その処理が通らない場合に起こります。
■【フォルダ内のファイルを一括で読み込む】
それでは、実際のプログラムコードを確認していきましょう。
■【ソースの記述】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | '------------------------------------------------------------ 同じディレクトリ内にファイルを読み込み、ファイル名を取得します。 '------------------------------------------------------------ Sub FileNameGet() Dim strPathFile As String Dim strMsg As String strPathFile = Dir("C:\temp\*.xlsx") '当ディレクトリ内のファイル存在チェック Do While strPathFile <> "" strMsg = strMsg & strPathFile & vbCrLf strPathFile = Dir() ’ファイル取得・・・エラー箇所① Loop Msgbox strMsg 'ファイル名を表示 End Sub |
「プロシージャの呼び出しまたは引数が無効です 。」のエラーメッセージは、エラー箇所①のファイルを取得する際にエラーが表示されます。
このソースを確認しても、記述が間違っているかというと、そうではありません。
2つのエラー原因とは
このエラー原因には、次の2つの理由が挙げられます。
<「プロシージャの呼び出しまたは引数が無効です 。」の2つの原因>
- 引数が許可されている値の範囲を超えている可能性
- プラットフォームで有効でない場合
Microsoft社のサポート内容ではこう記載!
このように、記載されており、非常にアバウトな内容で記載されています。
読み込みファイルが破損している可能性
そして、もう一つが「現在のプラットフォームが有効でない。」という記載があります。これは、どういことかというと、一つの事例をもとに解説していきましょう。
それは。。。
・エラー原因:読み込むファイルもしくは、ファイルのシートが破損している可能性
このエラーメッセージが表示されていますが、ソースは正しく記述されています。
こう言った場合の要因として疑うのが、読み込むファイル元が破損していることで起こる場合があります。
【下記の読み込むファイルが破損している】
これらの読み込むファイルが破損もしくは、シートが読めなくなっているため、ファイルは開けていても、プログラムの処理に正しく動作しなくなる可能性があります。
「プロシージャの呼び出しまたは引数が無効です。」の2つの対処法とは
そこで、このエラーが起こる原因の対処法には、下記2つが有効です。
<「プロシージャの呼び出しまたは引数が無効です 。」の2つの対処法とは>
- 壊れていそうなシートを探し当て一から作り直す。
- ファイルを新しく作り直す
エラーが起こる原因には、上記2つが有効ですが、もしよく利用されているシートがあり、そのシートがエラーの原因を作り出している可能性があるのであれば、そのシートだけを一から作り直すのが一番良い方法です。
そしてプログラムがうまく流れるか、試してみましょう。それが、最も修正に時間がかからない方法ですが、その原因が特定できない場合には、ファイルを一から作り直しましょう。
新規のファイルから作成することが、一番確実な方法でもありますので、原因が特定できているか、いないかで、その対処法を分けていきましょう。
実行環境
実行環境は下記になります。
OS:Windows7
Microsoft Offiice:2013
この環境以外でご利用の方は、エラー表示が異なることがありますので、参考程度にお考え下さい。
まとめ
いかがでしたでしょうか?この「プロシージャの呼び出しまたは引数が無効です 。」のエラーは、ファイルの破損によって起こる可能性が高いです。
プログラムソースの記述に誤りがない場合には、ファイルの破損を疑いましょう。
そしてファイルを作り直すことが大切です。