プロが教える店舗&オフィスのセキュリティ対策術

エクセル2000、Windows2000です。
エクセルのBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。

Sheets("Sheet1").Select
は、「実行時エラー1004 Sheetsメソッドは失敗しました。Globalオブジェクト」

ActiveWindow.SelectedSheets.PrintPreview
は、「実行時エラー1004 PrintPreviewメソッドは失敗しました。Sheetsオブジェクト」

などエラーになってしまいます。
自宅のエクセル2003,IE7.0でやってみても同様でした。
どのように対処すればよいのでしょうか?

なお、BOOKをIEで開くのは社内のイントラネットに掲載したエクセルをダウンロードするのではなく、イントラ上でIEで開くためのテストです。

A 回答 (3件)

<br /> 失礼。安易に LocationName を使ったのが失敗でした。<br /> <br /> Sub test(

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
    • good
    • 0
この回答へのお礼

締め切ったあとにまでご回答をいただき誠にありがとうございます。
連休でお礼が遅くなり申し訳ございませんでした。

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

お礼日時:2009/09/24 15:22

『?』付きですけど質問のようにも思えなくてちょっと様子見してましたが、一応、反応してみます。


>これも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 に変更してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/18 12:51

>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関連に対する設定や操作などは、ややこしくて
制御が大変です。(...だと思います。私が知らないだけかもしれませんが)
    • good
    • 0
この回答へのお礼

ありがとうございます。試してみました。

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では使えない機能ということですね?

お礼日時:2009/09/15 10:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!