- ベストアンサー
エクセルをインターネットエクスプローラで開いた場合のマクロについて
- エクセル2000、Windows2000でBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。
- Sheets("Sheet1").SelectメソッドやActiveWindow.SelectedSheets.PrintPreviewメソッドがエラーになる問題があります。
- エクセル2003とIE7.0でも同様のエラーが発生します。対処方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>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関連に対する設定や操作などは、ややこしくて 制御が大変です。(...だと思います。私が知らないだけかもしれませんが)
その他の回答 (2)
- end-u
- ベストアンサー率79% (496/625)
失礼。安易に 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
お礼
締め切ったあとにまでご回答をいただき誠にありがとうございます。 連休でお礼が遅くなり申し訳ございませんでした。 さっそく試してみました。 Webで開く際、あたらしいIEのウィンドでひらけば ie.Navigate "about:blank" ie.Quit ともにちゃんと動きました。ありがとうございました。 web上のエクセルのアイコンをダブリュクリックしてそのままのIE上で開くと無反応でした。 ご報告いたします。 なんどもありがとうございました。
- end-u
- ベストアンサー率79% (496/625)
『?』付きですけど質問のようにも思えなくてちょっと様子見してましたが、一応、反応してみます。 >これも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 に変更してください。
お礼
何度もありがとうございます。 PC内のエクセルをIEで開いた場合はご教示のでうまくいきましたが、実際にイントラネットに掲載してWeb上で開いてみたところ ie.Navigate "about:blank" ie.GoHome ie.Quit ともに無反応でした。 残念。
お礼
ありがとうございます。試してみました。 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では使えない機能ということですね?