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

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

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

エクセル2000、Windows2000です。 エクセルのBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。 Sheets("Sheet1").Select は、「実行時エラー1004 Sheetsメソッドは失敗しました。Globalオブジェクト」 ActiveWindow.SelectedSheets.PrintPreview は、「実行時エラー1004 PrintPreviewメソッドは失敗しました。Sheetsオブジェクト」 などエラーになってしまいます。 自宅のエクセル2003,IE7.0でやってみても同様でした。 どのように対処すればよいのでしょうか? なお、BOOKをIEで開くのは社内のイントラネットに掲載したエクセルをダウンロードするのではなく、イントラ上でIEで開くためのテストです。

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

  • ベストアンサー
  • 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

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • Web上のエクセルのVBA操作について

    OSはWin2000、エクセルも2000です。 社内のイントラネット上にエクセルのBOOKを置いてあります。 ダウンロードせずにダブルクリックでイントラ上で開いたこのBOOKに対するVBA操作で、以下の3つを試しましたが、すべてエラーになり、プレビューすることができません。 どう直せばよいのでしょうか? Sub test() ActiveSheet.PrintPreview End Sub Sub test2() ThisWorkbook.ActiveSheet.PrintPreview End Sub Sub test3() x = ThisWorkbook.ActiveSheet.Name ThisWorkbook.Sheets(x).PrintPreview End Sub また Sub 終了() ActiveWorkbook.Close (False) End Sub もまったく働きません。 どうやったら終了できますか?

  • エクセル マクロで教えてください

    下記のマクロがうまく働きません SUB印刷01は単独ではいくのですが、繰返しをするとプレビューの行で止まります。SHEETオブジェクトがおかしいというのですが私には分かりません宜しくお願いします Sub 印刷01() With ActiveSheet.PageSetup .PrintQuality = 600 .CenterHorizontally = True .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 47 .PrintErrors = xlPrintErrorsDisplayed End With ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True End Sub Sub 印刷繰返し() Dim WS As Object For Each WS In Sheets WS.Activate Call 印刷01 Next End Sub

  • エクセルのマクロについて

    エクセルのマクロについてご教示ください。 共有サーバにあるパスワードで保護されたブックを、別のブックの シートからマクロボタンで開くと、当然にパスワードを要求されま すが、ここでメッセージボックスのキャンセルボタンを押すと、 Openメソッドは失敗しました。Workbooksオブジェクトという実行時 エラーが表示されます。  このエラー表示を回避できる方法をご教示ください。  If文で処理しようと試みましたがだめでした。  よろしくお願いいたします。 

  • マクロの記録で作ったルーチンが動きません

    EXCEL2002で「マクロの記録」を使ってこんなマクロを作りました。 <マクロ> Sub Macro1() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これをコマンドボタンの押下に組込、こんなサブルーチンにしました。 <サブルーチン> Private Sub CommandButton3_Click() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これを実行すると4行目のCells.Selectで   実行時エラー'1004'   RangeクラスのSelectメソッドが失敗しました。 となって止まってしまいます。 ■■質問■■ なぜでしょう?<マクロ>の方はエラーになりません。 ■■追加の質問■■ 一方、マクロの方は   選択したシートに、データが存在する可能性があります。データを完全に削除する   には、[削除]をクリックしてください。 となってしまいます。このメッセージを回避する方法ははありますか?

  • エクセルのマクロ

    あるエクセルのブック内のシートをdドライブに自動的にunicodeのタブ区切りテキストで保存するマクロを作成しています。コードは for i = 1 to 10 Sheets(i).Select f_name = "d:\" + Trim(Str(i)) + ".txt" ActiveWorkbook.SaveAs Filename:=f_name,_ FileFormat:=xlUnicodeText, CreateBackup:=False next i こんな感じです。 しかしこれを実行するとイルカが 'aaa.txt'にアクセスできません。ファイルは読み取り専用であるか、または読み取り専用の場所にアクセスしようとしています。または、サーバー上に保存されているドキュメントから応答がありません。 と言うメッセージを出し、そこでキャンセルボタンを押すと 実行時エラー'1004': 'SaveAs'メソッドは失敗しました。'_Workbook'オブジェクト というメッセージが出ます。さらにデバックを押すと、プログラムコードの ActiveWorkbook.......の行で止まります。 環境はwindows2000、excel2000です。 何か足りないコードがあるのでしょうか? よろしくお願いします。

  • マクロで呼び出したプレビュー画面から印刷できない

    マクロで呼び出したプレビュー画面から印刷できない エクセル2010です。 下記のマクロで呼び出したプレビュー画面から印刷できません。 Sub test()   ActiveSheet.PrintPreview End Sub で呼び出したプレビュー画面から、印刷するために一番左上の「印刷」をクリックすると 実行時エラー1004 WorksheetクラスのPrintPreviewメソッドが失敗しました。 となってしまいます。 何がわるいのでしょうか?別のパソコンのエクセル2016では問題なく印刷できます。 頭をかかえています。

  • エクセルVBA実行後にファイルを自動で閉じるVBA

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?

  • エクセル マクロの作り方

    はじめまして エクセルのマクロ初心者です。 ツール→マクロ→新しいマクロの記録にて 開いているシートをA1~V68まで(すべての範囲でもOKです)をコピーし、別の貼り付け用シートに貼付、3つのタブを印刷して閉じ、開いているシートを表示する。という内容のマクロを登録しました。 台紙で以上のマクロを登録し、台紙を複製しました。 マクロを実行すると複製されたシートのA1~V68までではなく、台紙のA1~V68までが印刷されて困っています。 どうすれば解決するでしょうか???詳しい方おしえてください。 尚、下記に記録されたものを載せておきますので、訂正部分など教えてもらえたら助かります。 (マクロの記録の上部を訂正すると良いような気はするのですが…。初心者なのもので範囲の指定の仕方がわるいのでしょうか???) よろしくお願いします。 Sub マクロ名() ' ' マクロ名 Macro ' マクロ記録日 : 2007/10/14 ユーザー名 : ??? ' ' Application.Run "hozon1.初期" Range("A1:V68").Select Selection.Copy ChDir "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿" Workbooks.Open Filename:= _ "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls" Cells.Select ActiveSheet.Buttons.Add(509.25, 1.5, 72.75, 12.75).Select ActiveSheet.Paste Sheets("大型1").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("大型2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("小型1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWindow.Close ActiveWindow.SmallScroll Down:=-51 Range("J3").Select End Sub

  • エクセルをバージョンアップさせたらマクロがうまくいきません

    OSはXPです エクセル2002から 2003にバージョンをあげました いままでうまくいっていたマクロが Range(Cells(1, 1), Cells(Cells(65535, 1).End(xlUp).Row, 9)).Select Selection.Copy Sheets("Sheet1").Select Sheets.Add ActiveSheet.Paste このような内容で ActiveSheet.Paste  この部分でエラーが起きます 「実行時エラー ”1004”  worksheetクラスのpasteメソッドが   失敗しました」 というメッセージがでます。 どういう対処をしたらよろしいでしょうか? ご教授ください。 (バージョンを元にに戻すなど)

専門家に質問してみよう