• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルをインターネットエクスプローラで開いた場合のマクロ)

エクセルをインターネットエクスプローラで開いた場合のマクロについて

このQ&Aのポイント
  • エクセル2000、Windows2000でBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。
  • Sheets("Sheet1").SelectメソッドやActiveWindow.SelectedSheets.PrintPreviewメソッドがエラーになる問題があります。
  • エクセル2003とIE7.0でも同様のエラーが発生します。対処方法を教えてください。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>Sheets("Sheet1").Select >は、「実行時エラー1004 Sheetsメソッドは失敗しました。Globalオブジェクト」 これはどういう方法で実行させてますか? シート上のボタンや[Alt]+[F8]からの実行であれば問題ないのではないでしょうか。 VBEからの実行であれば恐らく失敗するでしょう。 多分、ですけどVBEからだとActiveWorkbookが無いと判断されるから(?) MsgBox ThisWorkbook.Name MsgBox ActiveWorkbook.Name 'VBEからだとエラー MsgBox Application.Visible とやってみると理由がわかるかも。 VBEからでもThisWorkbook.Sheets("Sheet1").Select とすれば良いのではないでしょうか。 >ActiveWindow.SelectedSheets.PrintPreview これは無理なようです。手作業でもできないですよね? IEの中のExcelメニューの[印刷プレビュー]関連のメニューは根こそぎ消えてますし IE(7)の印刷プレビューメニューはグレーアウトしてます。 試しに外部から ExecWBメソッドを実行してみましたけどエラーになります。 制限されているようです。 ExcelBookをIEで開いた場合、IEがExcelの機能を使ってBookを開くわけですから Excel.Applicationの全ての機能を実行できるわけではないと思います。 特にExcelが既に起動済みだったりすると、Window関連に対する設定や操作などは、ややこしくて 制御が大変です。(...だと思います。私が知らないだけかもしれませんが)

merlionXX
質問者

お礼

ありがとうございます。試してみました。 Sub test01() 'シートのボタンから MsgBox "ThisWorkbook.FullName= " & ThisWorkbook.FullName MsgBox "ActiveWorkbook.Name= " & ActiveWorkbook.Name 'VBEからだとエラー MsgBox "Application.Visible=" & Application.Visible Sheets("Sheet1").Select MsgBox "ThisWorkbook.ActiveSheet.Name=" & ThisWorkbook.ActiveSheet.Name MsgBox "ThisWorkbook.ActiveSheet.Visible=" & ThisWorkbook.ActiveSheet.Visible End Sub Sub test02() 'VBEから MsgBox "ThisWorkbook.FullName= " & ThisWorkbook.FullName ' MsgBox "ActiveWorkbook.Name= " & ActiveWorkbook.Name 'VBEからだとエラー MsgBox "Application.Visible=" & Application.Visible ThisWorkbook.Sheets("Sheet1").Select 'VBEからでもThisWorkbook.をつけるとOK MsgBox "ThisWorkbook.ActiveSheet.Name=" & ThisWorkbook.ActiveSheet.Name MsgBox "ThisWorkbook.ActiveSheet.Visible=" & ThisWorkbook.ActiveSheet.Visible End Sub Sub 終了() ThisWorkbook.Close (False) End Sub 終了はシートのボタンからからやってもまったく作動しませんでした。 これもPrintPreview同様、IEでは使えない機能ということですね?

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

失礼。安易に LocationName を使ったのが失敗でした。 Sub test()   Dim ie As Object   Dim sg As String   For Each ie In CreateObject("Shell.Application").Windows     If UCase(Dir(ie.FullName)) = "IEXPLORE.EXE" Then       sg = ie.LocationURL       If Mid$(sg, InStrRev(sg, "/") + 1) = ThisWorkbook.Name Then         Exit For       End If     End If   Next   If Not ie Is Nothing Then     ThisWorkbook.Saved = True '保存しない     ie.Navigate "about:blank"     'ie.Quit     Set ie = Nothing   End If End Sub

merlionXX
質問者

お礼

締め切ったあとにまでご回答をいただき誠にありがとうございます。 連休でお礼が遅くなり申し訳ございませんでした。 さっそく試してみました。 Webで開く際、あたらしいIEのウィンドでひらけば     ie.Navigate "about:blank"     ie.Quit ともにちゃんと動きました。ありがとうございました。 web上のエクセルのアイコンをダブリュクリックしてそのままのIE上で開くと無反応でした。 ご報告いたします。 なんどもありがとうございました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

『?』付きですけど質問のようにも思えなくてちょっと様子見してましたが、一応、反応してみます。 >これもPrintPreview同様、IEでは使えない機能ということですね? どうもそのようです。エラーが出るわけでもなく、無効化されているような感じですね。 IEで開いたExcelBookをクローズするにはIEに対する操作が必要なようです。 Sub test()   Dim ie As Object   For Each ie In CreateObject("Shell.Application").Windows     If UCase(Dir(ie.FullName)) = "IEXPLORE.EXE" Then       If ie.LocationName = ThisWorkbook.Name Then         Exit For       End If     End If   Next   If Not ie Is Nothing Then     'ThisWorkbook.Save    '保存する場合     ThisWorkbook.Saved = True '保存しない場合     ie.Navigate "about:blank"     'ie.Quit     Set ie = Nothing   End If End Sub ie.Navigate "about:blank" や .GoHome など、ページを切り替えればよいですが、 excel.exeのプロセスも終了させたい場合は Quit に変更してください。

merlionXX
質問者

お礼

何度もありがとうございます。 PC内のエクセルをIEで開いた場合はご教示のでうまくいきましたが、実際にイントラネットに掲載してWeb上で開いてみたところ     ie.Navigate "about:blank"     ie.GoHome     ie.Quit ともに無反応でした。 残念。

関連するQ&A