• 締切済み

エクセルVBA フォームを開く時パスが見つからない

エクセルVBAマクロを使って簡単なゲームを作成したのですが、原因不明のエラーに悩まされています。 ファイルを開いて、シート上のある部分をクリックすると UserForm1.Show となってゲームが開始される仕組みになっているのですが、この UserForm1.Show という命令のところで「実行時エラー '76' パスが見つかりません」が出てしまいます。 不思議なことに、ファイルを別名で保存しなおすと、このエラーが出なくなります。このひと手間で当座は遊べていますが、気持ちが悪いので原因を知りたいと思っています。 まず、UserFormを開くときに「パスが見つからない」というのはどういう事態なのでしょうか? 特にファイルを参照している箇所ではないので、皆目見当がつきません。また、別名で保存すると解消される理由としては何が考えられるでしょうか。 部分的な回答でも構いませんので、どうか知恵を貸していただければ幸いです。

  • incd
  • お礼率37% (24/64)

みんなの回答

  • ssfja
  • ベストアンサー率57% (11/19)
回答No.1

VBAが明確に外部ファイルを使用する箇所について、 既に確認済みであり、原因が他の箇所にあるという前提です。 別名保存で解消されることから予想できるのは次の3点です。 1. カレントディレクトリに依存している 2. 「パスが見つからない」のは自分自身のパス 3. 再コンパイルによって解決している これをヒントに、コードやフォームの全部品のプロパティなど、 詳細に見直すのが解決の道でしょう。 すべて問題が無いということでしたら、 Excel VBA の宿命的な不具合、 ソースとバイナリの不一致を疑う必要もあります。 VBA は、所詮、簡易開発環境なので、明示的なリビルドを持ちません。 バグというより、コンパイラの仕様として、 何度も修正を加えるとゴミが溜まります。 稀に、ゴミが影響し、 実行バイナリと VBA ソースが一致しないケースが発生します。 これに対する完全な処方箋は、 新規ブックにソースなどを全部テキストとしてコピーし、 ゼロからのコンパイルをすることです。 私はよく、次のSSFツールを使って掃除しますが、 現バージョンは UserForm 未対応なので、 ワンタッチとはいきませんね。 http://ssfja.wordpress.com/2011/05/22/how_to_get/

参考URL:
http://ssfja.wordpress.com/start_here/

関連するQ&A

  • ExcelのVBAでフォームが表示されない

    Sub フォーム起動() UserForm1.Show End Sub 上記の内容をModule1にしてショートカットキーをを設定し、いつでも他に作ってあるユーザーフォームが起動するようにしていました。しかし先日、久しぶりに使ってみようと、設定したショートカットキーを押したら、VBAもマクロも全くいじっていないにも関わらず、「UserForm1.Show」の部分で「実行時エラー'380': Valueプロパティを設定できません。プロパティの値が無効です。」とエラーが表示されフォームが起動できません。これはいったい何が原因なのでしょうか。

  • エクセルマクロの別名保存時のパス区切り文字

    エクセルマクロでセル内のパスとファイル名を繋げて別名保存したいと思ってます。 「/」と「\」のどちらを入力されるか分からないため 繋げたパスが「\\パソコン名/共有フォルダ名\ファイル名.xls」となるように入力した所"1004"のエラーが出ました。 デバッグした所 「ActiveWorkbook.SaveAs filename:=繋げたパス」 で落ちてました。 マクロを使わずに別名保存で「/」と「\」を使用した場合は保存されたのですが、なぜマクロだとエラーになってしまうのでしょうか? 入力されたパスの区切り文字をすべて「\」へ変更する処理を加えたので急ぎではないですが、どなたかご教授下さい。

  • EXCEL VBA UserFormで困っています。

    EXCEL VBA UserFormで困っています。 VBAプログラミングで以下のような現象が起こります。 開発環境  WinXP , EXCEL2003 ブックを起動するとメニューが表示され、そこからボタンを押すとuserform1が表示されるというプログラムなんですが、そのボタンを押してuserform1を起動しようとすると『問題が発生したため、  Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。 UserForm1.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 過去に似た質問を見つけ、そのアドバイスを元に以下を試してみました。 http://okwave.jp/qa/q2001805.html ・エラーの発生行の特定 userform1.showの前に、userform1.label.visible=falseのように、表示、非表示を切り替える命令を出しており、どうやらその表示命令の行でつまづいている事がわかりました。 表示命令を全て消去し実行したところ、現在までは問題なく起動できています。 ・on timeメソッドで時間差をつける ラベルやボタンの表示、非表示命令行をまとめて、 Application.OnTime Now + TimeValue("00:00:01"), "ラベルボタン表示設定" userform1.show といった形で時間差をつけてみました。 結果として、userform1自体は立ち上がるようになったのですが、時間差で実行される"ラベルボタン表示設定"の実行時に「オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。」と出てくるようになってしまいました。 ラベルはまだ良いのですが、コマンドボタンの表示、非表示は、誤操作を防ぐ手段として非常に重要です。なんとかエラーを出さずにコード通りに起動する方法はありませんでしょうか。

  • Excel VBAで別のブックからユーザーフォームの閉じる

    Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。

  • Excelマクロで別名保存したい時のパス指定の仕方

    Excelマクロでネットワーク上のファイルを、別名で自パソコンのデスクトップへ保存したいと思ってます。 ネットワーク上のファイルを開くのは決まったパソコンではない為、 GetAbsolutePathNameというメソッドを使用してます。 別名保存はsaveAsメソッドで保存したいのですが、絶対パスを指定しているにもかかわらずファイル名と認識されているらしく、1004のエラーが出てしまいます。 どうすれば絶対パスと認識してくれるのでしょうか? どなたか教えてください。 エラー内容は以下のとおりです。 実行時エラー:'1004': 『C:\Documents and Settings\パソコン名\My Documents\ "デスクトップ"にアクセスできません。』 ソースは以下のとおりです。 Dim fullPath As String Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") fullPath =FSO.GetAbsolutePathName("デスクトップ") fullPath =fullPath & "\"&"ファイル名.xls" ActiveWorkbook.SaveAs Filename:=fullPath バージョンはExcel2000を使用しています。

  • VBA ユーザフォームを非アクティブ固定にしたい

    エクセルVBAで作成されたプログラムで、一点改善したい点があります。 処理の開始を命令すると、ユーザフォームが出てきて進捗が「5/100が完了しました」のように 分かるようになっているんですが、処理が進み、この「5/100」の部分が更新される度に フォーカスがユーザフォームに移ってしまい、他の作業をしていると大変不便です。 ユーザフォームまわりのコードは以下のようになっています。 UserForm11.Show UserForm11.Label2.Caption = "処理実行中です。" & "(" & cnt1 & "/" & cnt2 & ")" 進捗を確認しつつ、かつフォーカスしないようにするようなコードはありませんでしょうか。

  • EXCEL VBA UserFormで困っています。

    現在VBAで業務用のシステムを開発しているのですが以下のような現象が起こります。 開発環境  WinXP , EXCEL2000 現象(1) 起動すると『問題が発生したため、  Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。 UserForm.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 現象(2) WinXP , EXCEL2000で正常に動作するものを WinXP , EXCEL2003で起動すると『パス名が無効です』のメッセージが出て起動しません。 (1)と同様にUserForm.Showのステップで一旦止めてステップモードで続行すると正常に動作します。 2点とも UserForm.Show のステップに問題があると思うのですが、自分なりに半月かけて調査しても何の解決の糸口も見つからずに困り果てています。 もし、ご存知でしたらご教示願えないでしょうか?

  • エクセルVBAのエラーについて

    以前のPC(Windows2000、Office2000)で作成したエクセルファイルのVBAを新しいPC(WindowsXP、Office2003)で修正し保存したところ古いPCでVBAのコンパイルエラーが出るようになってしまいました。 TrimとかMidのような極く基本的命令でエラーになっております。 イミディアットウィンドウで該当命令個所をPrint文で表示させようとしても命令が認識されません。 何が原因なのでしょうか?どのように対応すればよろしいのでしょうか? よろしくお願い申し上げます。

  • Excel VBAでユーザーフォームが表示されない

    使用環境:Excel2007 OS:Winows Vista A、Bの二つのExcel97-2003形式のxlsファイルがあります。 エクセルには自作のアドインを設定してあります。 (1) Aを開くと、Bを読み取り専用で開きます (2) Bを開いたら、アドインのモジュールを呼び出します。 (3) アドインからAを保存せずに閉じさせ、Bのデータを使用しフォームを表示させます。 ↑の(3)のフォームを表示部分でエラーも出ず、スルーされてしまい困っています。。。 Showの前までは正常に動いています。 この方法よりスマートな手法があればぜひお聞かせください。 みなさまのお力をお貸し下さい。お願いします。 以下コード Aのコード Private Sub Workbook_Open() ActiveWindow.WindowState = xlMinimized Workbooks.Open "B.xls", ReadOnly:=True" ←(1) Workbooks("B.xls").Activate Application.Run ("'アドイン.xla'!Module_関数.Admin") ←(2) End Sub アドインのコード Public Sub Admin() Workbooks("A.xls").Close SaveChanges:=False ←(3) UserForm1.Show vbModal ←問題部分 End Sub

  • Illustrator8.0のファイル保存の不具合。パスが保存後に切れてしまう。

    MacOS9.2上、Illustrator8.0の使用でファイル保存で不具合がおきており困っています。Map用の複雑なパスがあるデータを保存後、再度ファイルを開くと、つながっていたパスが切れてしまいます。つなぎ直して再度保存してもダメです。別名保存や、新規ファイルに書き直しても、ファイル形式を変更してもダメでした。また切れてしまうパスの場所は、ファイルを開く度に変わっていきます。この現象の事例や解決方法があれば教えてください。おねがいします。