【ExcelVBA】「プロシージャの呼び出しまたは引数が無効です 。」のエラー原因と対処法

2020年1月22日

今回は、ExcelVBAによるプログラム実行中に起こる次の実行時エラー「プロシージャの呼び出しまたは引数が無効です 。」このエラー原因とその対処法について解説していきましょう。

 

「プロシージャの呼び出しまたは引数が無効です 。」のエラーが起こるのはどんな時?

このエラーが起こるのは、下記のような事例の時に起こります。

 

同じディレクトリ内のファイルを一括で読み込む場合

この処理は、同じディレクトリ内のファイルを一括読み込む際に、本来きちんと記述されているプログラムなはずなのに、その処理が通らない場合に起こります。

■【フォルダ内のファイルを一括で読み込む】

 

それでは、実際のプログラムコードを確認していきましょう。

■【ソースの記述】

 

「プロシージャの呼び出しまたは引数が無効です 。」のエラーメッセージは、エラー箇所①のファイルを取得する際にエラーが表示されます。

このソースを確認しても、記述が間違っているかというと、そうではありません。

 

 

 

2つのエラー原因とは

このエラー原因には、次の2つの理由が挙げられます。

 

<「プロシージャの呼び出しまたは引数が無効です 。」の2つの原因>

  • 引数が許可されている値の範囲を超えている可能性
  • プラットフォームで有効でない場合

 

 

Microsoft社のサポート内容ではこう記載!

このように、記載されており、非常にアバウトな内容で記載されています。

 

 

読み込みファイルが破損している可能性

そして、もう一つが「現在のプラットフォームが有効でない。」という記載があります。これは、どういことかというと、一つの事例をもとに解説していきましょう。

それは。。。

・エラー原因:読み込むファイルもしくは、ファイルのシートが破損している可能性

このエラーメッセージが表示されていますが、ソースは正しく記述されています。

こう言った場合の要因として疑うのが、読み込むファイル元が破損していることで起こる場合があります。

【下記の読み込むファイルが破損している】

 

これらの読み込むファイルが破損もしくは、シートが読めなくなっているため、ファイルは開けていても、プログラムの処理に正しく動作しなくなる可能性があります。

 

「プロシージャの呼び出しまたは引数が無効です。」の2つの対処法とは

 

そこで、このエラーが起こる原因の対処法には、下記2つが有効です。

 

<「プロシージャの呼び出しまたは引数が無効です 。」の2つの対処法とは>

  • 壊れていそうなシートを探し当て一から作り直す。
  • ファイルを新しく作り直す

 

エラーが起こる原因には、上記2つが有効ですが、もしよく利用されているシートがあり、そのシートがエラーの原因を作り出している可能性があるのであれば、そのシートだけを一から作り直すのが一番良い方法です。

そしてプログラムがうまく流れるか、試してみましょう。それが、最も修正に時間がかからない方法ですが、その原因が特定できない場合には、ファイルを一から作り直しましょう。

新規のファイルから作成することが、一番確実な方法でもありますので、原因が特定できているか、いないかで、その対処法を分けていきましょう。

 

実行環境

実行環境は下記になります。

OS:Windows7

Microsoft Offiice:2013

 

この環境以外でご利用の方は、エラー表示が異なることがありますので、参考程度にお考え下さい。

 

 

まとめ

いかがでしたでしょうか?この「プロシージャの呼び出しまたは引数が無効です 。」のエラーは、ファイルの破損によって起こる可能性が高いです。

プログラムソースの記述に誤りがない場合には、ファイルの破損を疑いましょう。

そしてファイルを作り直すことが大切です。