• ベストアンサー
  • 困ってます

EXCEL97のVBAのトラブル

EXCEL97のVBAで誤ったプログラミングをしたため、 大切なファイルが開けなくなってしまいました。 "Private Sub Workbook_Open()"のところです。 Sheetが開ければ、他はすべて消えても構わないのですが、 なにか開く方法はないでしょうか? 強制終了になってしまいます。詳細には "EXCEL のページ違反です。 モジュール : EXCEL.EXE、アドレス : 0137:3009a7fd・・・"と出ます。

noname#4342
noname#4342

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数177
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • ARC
  • ベストアンサー率46% (643/1383)

SHIFTキーを押しながら、Excelを起動(もしくはファイルを開く)してください。一時的に自動実行マクロをオフにできます。 VBAのコードを開かないように注意しながら、ワークシートを別のファイルにコピーすると、シートの部分だけは救うことができるでしょう。 悲しいかな、VBAのコンパイラにはバグがあり、しばらく使っていると、たまに異常な実行コードを吐くことがあるのです。で、それがそのままExcelのファイルに保存されてしまったがために、開くたびにエラーが起きてしまうのです。(ちなみにこの部分は、実験とその結果に基づく推測です。)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

うまくいきました!ありがとうございます。 コードを見てみましたが別に間違いはありませんでした。

関連するQ&A

  • Office2010のVBAファイル自動オープン

    VBAの自動オープンで対象ファイルの開き方によって VBAが正常に動かないので質問させt下さい。 ネットワーク上のサーバーである AD-1から開くのとネットワークドライブPから開くのとでは Excelの名前の管理機能が動作しません。 Private Sub Workbook_Open() Workbooks.Open Filename:= _ "\\ad1\共通\aaaa.xlsx" Worksheets("Sheet1").Activate と Private Sub Workbook_Open() Workbooks.Open Filename:= _ "P:\共通\aaaa.xlsx" Worksheets("Sheet1").Activate 両方とも稼働させる方法はあるのでしょうか? よろしくお願いします。 End Sub

  • VBAについて質問です。

    VBAについて質問です。 現在、ExcelにてWorkbookを自動で作成するモジュールを作成しています。 モジュールを記載しているWorkbookを [wbSorce] 自動で作成されるWorkbookを [wbNew] とします。 [wbSorce] でモジュールを実行すると、 [wbNew] を新規に作成し、 データを入力して保存するのですが、保存する際に [wbNew] のイベントハンドラ [Workbook_Open] に 保存された [wbNew] を開いた時の挙動を記載するには どうすればよいでしょうか? サンプルは下記になります。 ****[wbSorce]のモジュール**** Sub wbNew_Sakusei()   Dim wb As Workbook   Dim wb2 As Workbook   Dim i As Integer   Set wb = ThisWorkbook   Set wb2 = Workbooks.Add   For i = 1 To 5     wb2.Sheets(1).Cells(1, i) = wb.Sheets(1).Cells(1, i)   Next   wb2.SaveAs Filename:="wbNew" End Sub ****[wbNew]に記述したいモジュール**** Private Sub Workbook_Open()   ActiveWindow.ScrollRow = 1   MsgBox "Workbook_Openイベントが発生しました。" End Sub

  • エクセル2003VBAで、スプレッドシートのシート変更イベントを教えてください。

    エクセル2003VBAで、スプレッドシートのシート名「Sheet1」のところをマウスで「Sheet2」「Sheet3」と変更したときに、セルA1の値を取得するイベントを発生させたいのですが、 Private Sub Spreadsheet2_sheetchange() の()の中身をどう書いたらよろしいでしょうか? ご存知の方、教えてください。 よろしくおねがいします!

  • VBAの「This Workbook」について

    VBAの「This Workbook」にコードを書くことについて教えて下さい。 ここにコードを書きと、例えばどんな便利な機能があるのでしょうか? よろしくお願いします。 私は下記の意味はだいだいわかります。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_Open()

  • VBA起動時のコンボボックスについて

    度々、お世話になっており、今回もご教授お願いしたいです。 VBAの“Sheet1”に2つのコンボボックスのプログラムを作成しました。 Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() どちらも選択(fmStyleDropDownList)のみです。 しかし、Excel起動時にコンボボックスの内容が登録されないため、 ThisWorkbookの【Private Sub Workbook_Open()】 で Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() ↑この2つを実行したいのですが、、、、 なんと記述したらよいかわからず、行き詰っています。。。 Private Sub Workbook_Open() ComboBox1_Change() = ture End Sub ↑こんな感じであれやこれや試してはいますが・・・ 記述方法をご教授ください。よろしくお願いします。

  • 【VBA】エクセルを絶対に閉じれなくしたい。

    エクセルのある特定のBookを閉じれなくする方法を探しています。 分かる方、どうかご教授願います。 ある特定のBookで、毎日必ずスタッフに入力作業をしてもらってます。 Bookは、ある特定の条件が揃うまで閉じる事が出来ないようにしています。 閉じれなくするのは、下記のようなコードを書いてます。 ※実際はもう少し応用してますが。 Private Sub Workbook_BeforClose(Cancel As Boolean) Cancel =True End Sub で、シートの上に閉じる用のコマンドボタンを用意して、ある特定の条件が そろった場合にだけ、コマンドボタンがイキ(Enabled=True)になって、 ボタンが押せて、保存と共にブックを閉じれるようにしています。 これで、大方イメージしている事が出来ているのですが、最近抜け道が横行 している事が判明しました。 つまり、タスクマネージャーからの強制終了です。 で、この強制終了も不可能にする方法はないでしょうか? 何かタスクマネージャーの起動自体を制御する方法もあるみたいですが・・・。 出来ればVBAのコードで出来たら助かります。 たぶん、API?とか言うのを使うのかなって思いますが・・・。 何かPCの設定をする事で出来るかもしれませんが、その設定自体もVBAで やりたいです。 と言うのは、各スタッフのPCごとに設定してしまったら、いつでもタスク マネージャーの使用、強制終了が不可能になってしまいます。 やりたいのは、この特定のBookを開いている時だけ、不可能にしたいんです。 だから、Bookを開いた時点でコードを実行して、不可能にする。 閉じる直前にもコードを実行して、それを解除するってのをやりたいんです。 どうかお知恵をおかしください。

  • VBAの更なる応用編

    度々すみません。 VBAで教えて下さい。 主ファイルYYYY.xlsmに下記の記述をしました。 副ファイルXXXX.xlsmがあります。 ------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("XXXX.xlsm").Close End Sub Private Sub Workbook_Open() Workbooks.Open Filename:= _ "XXXX.xlsm" Worksheets("Sheet1").Activate End Sub ------------------------------------------------- 以上で、YYYY.xlsmとXXXX.xlsmの場合、主、副の共に保存せずに 終了するにはどのようなコメントを追記したら良いですか。 ネットで調べた下記の内容は場所が悪いのか動作しませんでした。 Sub CloseWorkbook() Workbooks("XXXX").Close SaveChanges:= False End Sub

  • 下記のVBAを他のワークシートにも適用する方法?

    下記のVBAを他の同じエクセルファイル内の他のワークシート(Sheet2,Sheet3,Sheet4)にも反映するためにはどのようにしたらよろしいでしょうか? 現在書きVBAを本ワークブックという箇所に貼り付けております。 お手数ですがご教示いただきます様お願いいたします。 Private Sub Workbook_Open() With Sheets("Sheet1") .EnableOutlining = True .Protect Password:="****", UserInterfaceonly:=True End With End Sub

  • excel vba 選択されたセルの範囲を別のセル

    excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。

  • VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。

専門家に質問してみよう