• 締切済み

エクセルのシートにブラウザコントロールを貼り付けたのですが、シート移動をするとエラーが出ます

Microsoft Excelのsheet1に、Microsoft Web Browser(コントロール)を貼り付けて sheet1がアクティブならwebページを表示するように sheet1に下記のコードを記述しました。 Private Sub Sheet1_Activate()    WebBrowser1.GoHome End Sub すると表示はうまくいくのですが、sheet1からsheet2へ移動すると 「問題が発生したため、Microsoft Office Excel を終了します。 ご不便をおかけして申し訳ありません。」と表示されてしまいます。 このコードの書き方に問題があるのでしょうか? 環境は windows XP Proffesional SP1 Excel 2003  です。 よろしくお願いします。

みんなの回答

  • korin_
  • ベストアンサー率69% (46/66)
回答No.1

こちらが同様の現象のようですので、参考になるかもしれません。 ExcelにWebBrowserコントロールを貼り付けるとシート切り替えで落ちる http://okwave.jp/qa2097572.html

toshizo-
質問者

お礼

お返事遅くなり申し訳ありません! URL参考にさせていただきます。 ありがとうございます!

関連するQ&A

  • ExcelにWebBrowserコントロールを貼り付けるとシート切り替えで落ちる

    いつもお世話になっています。 さて、タイトルどおりなのですが、エクセルのシート1にWebBrowserコントロールを貼り付け、 シート1のマクロに Private Sub Worksheet_Activate()  WebBrowser1.Navigate "http://www.yahoo.co.jp/" End Sub と貼り付けます。 そしていったん保存して終了後、マクロを有効にしてファイルを開き、シート1←→シート2の作業を何度か行うと、 「問題が発生したため、Microsoft Excel を終了します。 ご不便をおかけして申し訳ありません。」 のダイアログとともにエクセルがエラー終了してしまいます。 これはエクセルの不具合(IEコンポーネントの不具合)で解決策はないのでしょうか? どなたか解決方法をご存知の方、お知恵をお貸しください。 OSはXP、オフィスは2002SP3を使用しています。

  • シート名でなくindex番号でシートの移動をしたい

    windows7 Excel2007でマクロ作成の初心者です。以下の点で困ってます。ご指導お願いします。 シートの次ページへ、およびページの前に戻るというコードをつくりましたが、文字列でなく、indexを使ってつくりたのでですが、思うようになりません。 現在のコードは Private Sub 次ページへ_Click() If ActiveSheet.Name <> "23.日本太郎" Then ActiveSheet.Next.Activate End If End Sub ---------------------------------- Private Sub 前に戻る_Click() On Error Resume Next If ActiveSheet.Name <> "1.日本花子" Then ActiveSheet.Previous.Activate End If End Sub これを Dim i As Integer For i = 1 To Worksheets.Count - 6 などを使って作りたいです、なぜかというとシートの増減で名前が変わったとき、いちいち名前を変更しなければならないからです。

  • エクセルのシートの移動禁止方法について

    'UserForm1 Public 着目シート名  Public シート変更禁止 As Boolean Private Sub CommandButton1_Click() 着目シート名 = "Sheet1" シート変更禁止 = True End Sub Private Sub CommandButton2_Click() 着目シート名 = "Sheet2" シート変更禁止 = True End Sub 'ThisWorkbook Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) If シート移動禁止 = True Then Worksheets(着目シート名).Activate End If End Sub '標準モジュール Sub test() UserForm1.Show End Sub 'UserForm1には、CommandButton1,CommandButton2のみ貼り付けています。 'フォームは、ShwoModal=Falseにしています それぞれのモジュールに上記のコードを書いて、フォーム上のボタンを押すと、 シートの変更が出来ないようにしようと考えています。 シートは、任意に変更しようと考えていますので、シート名の指定に変数を使いたいのですが、スコープの問題からか? 着目シート名がEmpteyになってしまい、自由に変更が可能となってしまいます。 何が、悪いのでしょうか? どなたか詳しい方教えて頂けないでしょうか?宜しくお願いいたします。 (Workbook_SheetDeactivateによる方法は、ここで教えて頂いた方法をアレンジしようとしている部分です。) QNo.2503758の続きの質問です。

  • Excelマクロで他シートへの抽出:エラー

    こちらの質問 http://okwave.jp/qa/q4760155.html を参考に、エクセルマクロを作りました。 Sheet1の10列目(J)に@が入っている行をすべて、 Sheet2に抽出表示します。コードは次になります。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:N1").AutoFilter .Range("A1:N1").AutoFilter Field:=10, Criteria1:="@" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub このマクロを実行すると、確かにSheet2では抽出が行われるのですが、 同時にSheet1の内容も抽出された内容に変わってしまいます。 どこに問題があるのでしょうか。 よろしくお願いします。

  • WebBrowserコントロール(続き)(続き)

    QNo.746387で下記のコードを教えてもらいました。 これでwebbrowserに表示されました。 Private Sub Command1_Click() Open "temp.html" For Output As #1 Print #1, "<html><body>あいうえお</body></html>" Close #1 WebBrowser1.Navigate2 CurDir + "\temp.html" End Sub 保存場所を変えて Private Sub Command1_Click() Open "c:\temp.html" For Output As #1 Print #1, "<html><body>あいうえお</body></html>" Close #1 WebBrowser1.Navigate2 CurDir + "c:\temp.html" End Sub とやったのですが、保存はされますが、表示がされません。 WebBrowser1.Navigate2 CurDir + "c:\temp.html" が問題のようです。 どうしたらよいのでしょうか?

  • Excel VBAでの初期設定

    Excel VBA 初心者です。Excelは2013です。VBAでBookを開いたときにあるシートの初期設定をしたいと考えています。Activateイベントを使おうと思いましたがイベントが発生しないことがあるため質問しています。 例として以下のようなコードを記述したとき、sheet1以外を開いて保存している場合にはActivateイベントは発生しますが、sheet1を開いて保存している場合にはイベントが発生しないため初期設定の処理ができませんでした。 対応方法をお分かりの方ご教授いただけないでしょうか。 ============================= '"以下をThisWorkbook"に記述 Private Sub Workbook_Open() '②Worksheets("sheet2").Activate も入れれば Activateイベントは発生する Worksheets("sheet1").Activate '①もともと sheet1がActiveで保存されていた場合、Activateイベントは発生しなかった End Sub ============================= '"以下をsheet1"に記述 Private Sub Worksheet_Activate() '初期設定処理 MsgBox "sheet1の初期設定をしました" End Sub ============================= 宜しくお願いします。

  • Excelでのエラー

    こんにちわ。 今、以下のようなコードを実行した際に、エラーがでてしまい困っています。 ************************************************** Private Sub CommandButton3_Click() '再計算を自動に設定 With Application .Calculation = xlCalculationAutomatic .MaxChange = 0.001 End With ActiveWorkbook.PrecisionAsDisplayed = False UserForm4.Hide UserForm3.Show End Sub ************************************************* (この処理の前には、手動計算に設定しています。) このコードでExcel2000では、問題なく処理がされるのですが、 Excel97では、 「Calculationメソッドは失敗しました。"_Application"オブジェクト」 というようなエラーが出ます。 コード的にはExcel2000で問題なく動いているので、 大丈夫だと思うのですが、Excel97でオブジェクトの指定の仕方や、自動計算のメソッドに上記コードだと問題があるのでしょうか? どなたかわかる方、回答をお願い致します。

  • エクセル VBA SHeetの隠し

    エクセルマクロでThisWorkbookの 記述に下記のようにしました! つまりSheet2を隠す為にしました! Sheet2はマスターなのでそこを使用者に 触らせないように!と思いしましたが・・・ いざ、ファイルを開くと{マクロを有効にする} をクリックしすと{編集の為にロックされています} と表示され読み取り専用になってしまいます! 記述が間違っているのでしょうか? しかもファイルを閉じるとエラー表示され エラーを報告を送信しますか?と必ず表示されます! 他のファイルは問題なく開いたり閉じたり出来ます。 やはり、記述の問題なのでしょうか? 教えて下さい! Private Sub Workbook_Activate() Dim Msg As String, Sn As Variant Sheets("入力").Visible = True Sheets("Sheet2").Visible = False Sheets("グラフ").Visible = True Sheets("入力").Activate UserForm1.Hide End Sub

  • エラーになる理由とならない理由は?

    同じアプリケーション内にBook1.xlsとBook2.xlsを開き、 Book1.xlsのSheet1に アクティブエックスのコマンドボタンを設置して、 Private Sub CommandButton1_Click() Range("a1").Select End Sub としました。 このコードは問題なく実行できますが、 Book1.xlsのコマンドボタンから、 「Book2.xlsのSheet1を選択する」というコードをしたい時に、 Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Range("a1").Select End Sub をすると、 「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」 になります。 しかしなぜかRangeの前にSheets("Sheet1")を入れて Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Sheets("Sheet1").Range("a1").Select End Sub にすると、問題なく実行できます。 Book1.xlsにもBook2.xlsにも「Sheet1」と言う名のシートはあります。 なぜ、Sheets("Sheet1").を入れるとエラーにならないのか教えてください。

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

専門家に質問してみよう