
タイトルの件、コードをご存じの方教えて下さい。
【やりたい事】
すでに、任意のIEが1ページ開いています。
同ページのサイズや表示位置を変更したいです。
下記のコードは、ヤフートップページとういうて特定の
ページの表示サイズや表示位置を指示したものです
このヤフートップページを、既に開いているページに
変更をしたいということです
【コード】
Public Sub changePosAndSize()
'IEを格納する変数(オブジェクト型)
Dim ie As Object
'IEを起動
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate2 ("https://www.yahoo.co.jp/")
With ie
.Top = 0 '上位置
.Left = 0 '左位置
.Width = 1600 '幅
.Height = 800 '高さ
.Resizable = True 'サイズ変更可否
End With
End Sub
No.4ベストアンサー
- 回答日時:
#3です
見直しましたら
>開いているページのアドレスが分からない仕様
>すでに、任意のIEが1ページ開いています。
https://www.yahoo.co.jp/ でないと言う事ですね
If objWindow.document.URL = "https://www.yahoo.co.jp/" Then
を
If objWindow.Name = "Internet Explorer" Then とかで良いかな・・
あと すでにと言うことは・・
IEに複数タブが存在するケースもありと言う事でしょうか
With ie .Top = 0 とあったので一例としてShell.Applicationにしたけれど
1タブだけなら#3で条件を変えれば・・・動くと思いますが
複数タブが存在する場合、機能しないと思いますので
WindowsAPIのSetWindowPosを使って以下のようにすれば出来ると思います(一例です macはNG)
Option Explicit
Public Const SWP_NOZORDER = &H4& 'Zオーダーを維持
Private Declare Function SetWindowPos Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal hWndInsetAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal uFlags As Long _
) As Long
Public Sub changePosAndSize()
Dim objIE As InternetExplorer
Dim objShell As Object, objWindow As Object
Dim flg As Boolean
Set objShell = CreateObject("Shell.Application")
For Each objWindow In objShell.Windows
If TypeName(objWindow.document) = "HTMLDocument" Then
If objWindow.Name = "Internet Explorer" Then
Set objIE = objWindow
flg = True
Exit For
End If
End If
Next
Set objShell = Nothing
If flg = True Then
Call SetWindowPos(objIE.Application.hWnd, 0, 0, -1, 1600, 800, SWP_NOZORDER)
Else
MsgBox "IEが見つかりません"
End If
End Sub
Set objIE = objWindow を#3で書いているので そのまま使って
objIE.Application.hWnd で対応(APIで特定する方法もあります)
WindowsAPIについては Private Declare Function SetWindowPos Lib など(パラメータなど)で調べてください
参考 https://www.tokovalue.jp/function/SetWindowPos.htm
_
No.3
- 回答日時:
こんばんは
やり方は色々ありますが、Shell.Applicationのコードだけです・・
Public Sub changePosAndSize()
Dim objIE As InternetExplorer
Dim objShell As Object, objWindow As Object
Dim flg As Boolean
Set objShell = CreateObject("Shell.Application")
For Each objWindow In objShell.Windows
If TypeName(objWindow.document) = "HTMLDocument" Then
If objWindow.document.URL = "https://www.yahoo.co.jp/" Then
Set objIE = objWindow
flg = True
Exit For
End If
End If
Next
Set objShell = Nothing
If flg = True Then
With objIE
.Top = 0 '上位置
.Left = 0 '左位置
.Width = 1600 '幅
.Height = 800 '高さ
.Resizable = True 'サイズ変更可否
End With
Else
MsgBox "指定IEが見つかりません"
End If
End Sub
No.1
- 回答日時:
こんばんは
ご提示のコードは、新規にIEを起動して制御するコードです。
ですので、ご質問にある「既に起動しているIE」とはあまり関係がないと言えます。
既に開いているのなら、まず最初に、「起動しているWindowを順に調べてIEを探す」必要があります。
以下のページが、ご参考になるのではないかと思います。
https://vba-create.jp/vba-ie-shell-set-objie-new …
※ 一方で、IEのサポートは既に終了していますので、通常利用としてお使いになるのはあまり勧められることではないとも思いますけれど・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】実行時エラー '424':...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】左のブックと右のブ...
-
空白のはずがSUBTOTAL関数でカ...
-
エクセルシートの見出しの文字...
-
【関数】3つのセルの中で最新...
-
Excelに貼ったXのURLのリンク...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
【マクロ】【画像あり】❶ブック...
-
エクセルの複雑なシフト表から...
-
Excelで4択問題を作成したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセルマクロ】既に開いて...
-
ie(6)が起動しない
-
メンバーの組み合わせに使う乱数表
-
Webサイトのurlの保存方法?
-
PCのウェブサイトのショートカ...
-
EdgeでInPrivate上Webページの...
-
パソコン版グーグルマップを最...
-
Photoshop初心者です。PCが重い...
-
サイトのショートカットアイコ...
-
ASUS UEFI BIOS utilityという...
-
VMWare Player 上でフリーズ抜...
-
このサイトは安全に接続できま...
-
指定されたパスは存在しません...
-
Edgeとベータ版との違いは?
-
パソコンと体質的に相性が悪い...
-
インターネットショートカット...
-
エクセル固まった時 その作業...
-
エクセルでマクロ使うとフリー...
-
Microsoft Edge で InPrivateを...
-
デスクトップのショートカット...
おすすめ情報