よろしくお願いします。
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でなくてもかまいません。
なにか良い方法がありましたら教えてください。
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