【Excel-VBA】ダイアログ選択してもエラーが起こる場合の原因と対処法

2020年2月29日

処理の自動化に最適なVBA。ダイアログボックスからファイルを選択して、普段であればエラーが起こらない処理なのに、あるとき突然エラーが起こってマクロの処理が途中で止まってしまった。
なんてことも起こることがあります。

ユーザー
ユーザー

・いったい何が原因なんだろう?
・今までは読み込めていたのに。

こんな悩みについて解決していこうと思います。

エラーの現象とメッセージ表示について

 

このように、プログラム上でダイアログボックスを表示して、ユーザーがファイルを選択しても、途中でプログラムのデバッグ画面に入り、エラーが表示されてしまいます。

エラー表示には、下記2つのエラーが表示される場合があります。

<2つのエラーメッセージ>

・実行時エラー76:パスが見つかりません。

・Run- time error 1004:Cannot open the filebnecause the full path of the file is too long.・・・・・

 

エラーメッセージ1:パスが見つかりません。

 

一つ目は、「パスが見つかりません。」のメッセージが表示されていますが、ファイルもきちんとダイアログボックスで選択しているので、本来であれば、正しくパスが取得できるはずなのですが、ファイルを選択しても先に進むことができません。

またエラー表示に合わせて、デバッグ画面に入ってしまいました。

パスを取得できているはずなのに、どうしてこのエラーがでてしまったのでしょうか?

 

エラーメッセージ2:Connot open the filebnecause the full path of the file is too long.・・・・・

もう一つは、このように、エラー表示がわかりやすく出る場合もあります。

 

パス名が長すぎることが原因になっているようですね。

 

エラーが起こる主な3つの原因とは

そこで、このダイアログ表示後にファイルを選択してもエラーが表示される。このエラーに関しては、下記の理由が考えられます。

 

<ダイアログ表示時のエラーな原因とは>

  • ファイルの格納する階層が深すぎる
  • URLの長さが255文字を超えた場合
  • OFFICE & OSのバージョンアップによる影響
  • 読み込みファイルが破損している場合

 

フォルダの階層が深すぎる・URLが長すぎる

エラーの一つ目として、ファイルの格納先の階層が深すぎることが原因で動かなくなることがあります。

フォルダ名が読み込めずエラーになることがありますので、階層が深い場合には注意して下さい。またURLが長すぎる場合も同様のことを指しますので、注意しておきましょう。

 

OFFICEやOSのバージョンアップ

OFFICEやOSのバージョンが変わった場合にも注意が必要です。

でいつもは動作していたものが、動作しなくなる場合があります。

これらのことを試してもファイルが動作しない場合には、ファイルの破損が疑われます。ファイルを新しく作り直しましょう。

 

エラーを解消するための主な3つの対処法

それでは、こうしたエラーを解消するためには、主に3つの対処法があります。

<ダイアログ表示時のエラーの対処法>

  • フォルダの格納先を変更する
  • OFFICEのバージョンが変更になっている場合参照設定の見直し
  • ファイルの作り直し

 

フォルダ名・ファイルパスを短くしましょう。

フォルダの格納先を変更するだけで処理が正常に動くことがあります。保存先の階層が深い場合には、注意しましょう。

一度読み込みファイルをデスクトップにおいてから再度処理をして対応を行ってみて下さい。処理が解消される場合があります。

 

エラーが起こるパスの違い

例:

×⇒ C:\Users\UserName\Desktop\aaaaaaaaaaaaaaaaaaaaaa

   \bbbbbbbbbbbbbbbbbbbb\ccccccccccccc\temp\

●⇒  C:\Users\UserName\Desktop\Club\a\temp\

 

OfficeやOSのバージョンに伴う参照設定の見直し

またOFFICEやOSのバージョンが変更されている場合には、マクロの参照設定が崩れて動作しないことがあります。
参照設定を最新のものに切り替えましょう。

 

ファイルの再作成

これらを行っても、改善されない場合には、ファイルが破損している可能性があります。

ファイルを新規で作成していきましょう。

 

まとめ

このように、VBAによるファイルの読み込みエラーは、様々な所でおこります。エラーの原因となる事象を経験しないとわからない部分でもありますので、一つ一つエラーが起こる可能性原因を想定できるように、知見を身につけることが非常に大切になることを覚えておきましょう。