IEで表示させたエクセルファイルの拡大縮小

このQ&Aのポイント
  • IEでエクセルファイルを表示し、拡大縮小させる方法について教えてください。
  • VB Scriptを使ってエクセルファイルをIEで表示させ、拡大縮小を試みましたがうまくいきませんでした。
  • 他の方法として、エクセルのファイルを外部から値を渡してブラウザに表示させる方法を探しています。
回答を見る
  • ベストアンサー

IEに表示させたエクセルファイルの拡大縮小

よろしくお願いします。 IEにエクセルファイルを表示して、それを拡大、縮小ができるようにしたいです。 私が考えたのは、VB Scriptを使う方法で、 まずHTMLファイルを起動するとエクセルファイルをIEで表示させ、 次にそれを拡大縮小させようとしたのですがうまくいかず、 次にやってみたのは、 同様にエクセルファイルをIEで表示させた後、 さらに別のエクセルファイルを非表示で読み込み、 そのファイルにあるマクロを呼び、そのマクロで拡大や縮小をする方法です。 しかしそれもどうもうまくいきません。 VB Scriptでマクロを呼ぶことは出来ているのですが、 オブジェクトの指定がうまくいってないのでしょうか、 正常に動作しません。 マクロは以下のとおりです。 '----------------------------------------------- Public Sub zoomzoom(b As Long) ActiveWindow.zoom = b End Sub '----------------------------------------------- Public Sub protect() ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub '----------------------------------------------- Public Sub message() MsgBox "OK" End Sub '----------------------------------------------- 最終的に、エクセルのファイルを、外部から値を渡してその倍率でブラウザに表示させる、ということができれば別にVB Scriptでなくてもかまいません。 なにか良い方法がありましたら教えてください。

noname#21743
noname#21743

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

ZOOMはWINDOWオブジェクトに行わなければならいない事は、わかっていると思いますが、、、 EXCEL内部ではなく、IE内部に派生させたBOOKに対しては制限が発生します。 IE内部のBOOKがEXCELとのパイプがつながっている時に、WINDOWオブジェクトを取得しなければなりません。 そのタイミングは、BOOKを持ったIEがアクティブな時だけです。 なのでその瞬間にActiveWindowを取得し、変数に保持しておくことで、WINDOWに対するメソッドが有効になります。 サンプルの注意事項として、、、 >  objExplorer.Visible = True >  DoEvents >  Set objWin = objBook.Parent.ActiveWindow の部分をステップ実行で行うと、IEでなくVBがアクティブになってしまい、アクティブウィンドウを取得できません。 VBサンプルです Sub Main()   Dim objExplorer As Object   Dim objBook   As Object   Dim objWin   As Object      Set objExplorer = CreateObject("InternetExplorer.Application")   objExplorer.Navigate "c:\Test.xls"      Do     DoEvents   Loop While objExplorer.busy      Set objBook = objExplorer.Document      objExplorer.Visible = True   DoEvents   Set objWin = objBook.Parent.ActiveWindow      On Error GoTo PGMEND   Do     objWin.Zoom = InputBox("倍率指定 エラーになるような入力をすると終われます。", "開いたIE内のEXCEL倍率変更サンプル")   Loop    PGMEND:   On Error Resume Next   objExplorer.Quit   Set objBook = Nothing   Set objWin = Nothing   Set objExplorer = Nothing End Sub

関連するQ&A

  • EXCEL VBA シート保護のエラー

    こんにちは。 ここでいろいろ質問をさせていただき、なんとかマクロを完成させましたが・・・ 自分のPCで動かす分には、なにも問題なくうごくのですが、他のPCで動かしたところ”1004”のエラーが出てしまい動かなくなりました(”1004”は、アプリケーション定義がなんとかいうものです) Private Sub CommandButton1_Click() Worksheets("A").Unprotect Password:="○○○" Worksheets("B").Unprotect Password:="○○○" Worksheets("B").Range("B50:L100").ClearContents Worksheets("A").Range("B50:L100").AutoFilter field:=1, Criteria1:="=" Worksheets("A").Range("B50:L100").Copy Worksheets("B").Range("B50") Worksheets("B").Range("B36:L100").Interior.ColorIndex = xlNone Worksheets("A").AutoFilterMode = False Worksheets("A").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True Worksheets("B").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub 黄色くなるところは、 Worksheets("A").Protect Password:="○○○", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True の部分です。そして画面には10枚あるすべてのシートのエラーが・・・。 Worksheets("A")と指定しているのに、10枚全てのエラーがでるのも?だし、自分のPCではうまくいくのに他ではダメというところが分かりません。よろしくお願いします。

  • エクセルの拡大・縮小表示

    エクセル上での拡大縮小表示、スクロールをホイールマウスを使って、もっとスムーズに出来ないものでしょうか? 拡大はまだ良いのですが、縮小のときにセンターがどんどんズレていってしまいますよね。 スクロールも、『手づかみ』でドラッグするようなものの方が、断然やりやすいと思うのですが・・。 CADなんかのスクロールをイメージしているんですが、不可能なのでしょうか?

  • 非表示になったエクセルは?

    VBAマクロでパソコン画面からエクセルを非表示にする場合、 Sub TEST1() Application.visible = False End Sub で画面からエクセルが消えると思いますが、消えたエクセルはどうなってしまうのでしょうか? 何もしなければいつまでもそのままなのでしょうか? 電源を切ればでてくるのでしょうか? Application.visible = Trueで表示されるのはわかりますが、消えたエクセルにどうやってそのマクロを作動させたら良いのでしょうか? 10秒後に自動的に再表示させる方法はマクロに最初から Application.OnTime Now + TimeValue("00:00:10) などで自動実行させればよいのでしょうが、そうでない場合の再表示方法を教えてください。

  • エクセル:常に保護をかけるがマクロは有効

    シートに、マクロ実行時以外保護をかけておきたいです。 (マクロで、ロックをかけたセルを操作したいので) 「マクロを記録する」で保護をかける操作を記録してもらったところ、 「許可する操作」は以下の記述で実行されるようです。 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True ここに「マクロからの変更は有効」の UserInterfaceOnly:=True を加えた以下のコードは、 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True, UserInterfaceOnly:=True どのSubに記述すればよいでしょうか。 ワークシートに直接書込むんですよね? Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub に書いてみたら一時期正常に動いていたと思うのですが、どうやら勘違いだったみたいです。 ActiveもChangeも違うようなのですが(なぜかどちらも一時は動いたような…)。

  • EXCELのシートを拡大・縮小するマクロ

    EXCELのシートを拡大・縮小するマクロをご教授下さい。 拡大ボタンをクリックする度に拡大し 縮小ボタンをクリックする度に縮小させるのが目的です。 特定の倍率に対して1個のボタンを設定することは できるのですが、上のようなことは可能でしょうか? 例えば、 拡大ボタンを押す毎に10%づつ拡大 縮小ボタンを押す毎に10%づつ縮小 のようなことができればと思うのですが・・・・

  • Excelファイルを開いた時に、特定のシートに保護をかけたいです。

    Excelファイルを開いた時に、特定のシートに保護をかけたいです。 http://okwave.jp/qa/q6067314.html 本日質問しましたカーソルの変な動作の原因というか引き金がわかりましたので、 再度質問致します。 Sheet1, Sheet2, Sheet3の3シートがあるExcelファイルを開いた時に、Sheet2に保護をかけたいです。 そこで、 ThisWorkbookの中に、以下のように記述しました。 Private Sub Workbook_Open()  Worksheets("Sheet2").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True  Worksheets("Sheet2").EnableSelection = xlUnlockedCells  'マクロ使用時には保護を無視したい End Sub このように記述し、Excelファイルを開くと、Sheet2に保護がかかります。 ただし、 (Excelファイルを開く際は、「前回保存時に開いていたシートで開く」と思うのですが、) このExcelファイルをSheet1またはSheet3を表示させた状態で保存すると、 次にこのExcelファイルを開いた時になぜかSheet1または3にも保護がかかってしまいます。 この「Sheet1または3にかかった保護」は、一度別のシートに切り替えることで解除される一時的なものなのですが、 なぜ指定していないSheet1または3にも保護がかかってしまうのでしょうか。 ThisWorkbookへの書き方がまずいでしょうか。 以上、知っている方いましたらよろしくお願いいたします。

  • Excel VBA 超初心者 困っています。

     Excelで見積書を作成しています。  マクロでページを追加できるようにしたいのですが、貼り付け先のセルを指定する方法をインターネットで探しながら作ってみると  実行時エラー1004 Range クラスの PasteSpecial メソッドが失敗しました。 となります。  ワークシートを指定すればいいのかなと思いますが、どういう風に指定するのかがわかりません。    どうか、教えてくださいませんでしょうか。宜しくお願いします。 Sub 頁追加() ActiveSheet.Unprotect ActiveSheet.Range("A42:AZ84").Copy Dim a As Range Set a = Application.InputBox( _ Prompt:="セル範囲を選択してください", _ Title:="セル選択ダイアログ", _ Type:=8) a.PasteSpecial Application.CutCopyMode = False EndSec: Set Rng = Nothing ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

  • エクセル 行追加マクロについて

    エクセル 行追加マクロについて 2007エクセルマクロ初心者です。 スケジュール表を作成、行追加マクロを作ろうとしてます。 シートの上下に表があり、上の表に行追加です。 関数式を壊したくないので、一部セルへロックをかけています。 以下の点についてご教授をお願いいたします。 行追加マクロを実行するとパスワードを要求されます。 聞かれないようにできないでしょうか。? パスワードを入力した以降は要求されませんが シートの保護解除を選択すると保護が解除されてしまいます。 パスワード記載のマクロを試したことがありますが、 表へオートシェイプが描写できなかったので断念しました。 Sub 行追加() With ActiveSheet 'シート保護解除 .Unprotect Range("A65536").End(xlUp).Offset(-8).Select ActiveCell.Resize(1, 79).Select Selection.Copy Selection.Insert Shift:=xlDown Range("A65536").End(xlUp).Offset(-8).Select ActiveCell.Resize(1, 9).Select Selection.ClearContents 'シート保護 .Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ True End With End Sub

  • エクセル マクロ picture

    教えてもらいながら以下のような画像貼り付けマクロを組んだのですが,以下の点に引っかかり前進することができません. 教えて頂きたいと思い投稿しました. 躓いている点  シート内でボタンを利用して貼り付け及び削除をしているのですが,エクセルシート内でコピペするたびに「Selection.Name」と貼り付け先を修正しています. →これをコピペしても修正をしなくてもよいマクロはないでしょうか? 自作作成マクロ Sub 写真貼付1_Click() Dim AA As String, BB As String, CC As String 10 AA = InputBox("参照先を指定して下さい。例:D:\Photo001.jpg", "場所指定", AA) If (AA = "") Then AA = Application.GetOpenFilename(Title:="写真ファイルの場所はどこですか?") GoTo 10 End If ActiveSheet.Unprotect Range("m29").Select ActiveSheet.Pictures.Insert(AA).Select Selection.Name = "写真1" Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 310 Selection.ShapeRange.Width = 310# Selection.ShapeRange.IncrementLeft 1 Selection.ShapeRange.IncrementTop 1 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub -------------------------------------------------- Sub 写真削除1_Click() ActiveSheet.Shapes("写真1").Select Selection.Delete ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub ところどころ端折ってますが,以上のようなマクロです. よろしくお願いします.

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

専門家に質問してみよう