
Excel VBAを使ってIEなどのプログラムのクライアント領域の
ウインドウのサイズを指定・変更したいと考えています。
http://www.excel-vba.net/excel-api-020.html
このページのコードを使ってサイズの取得だけはできるようになりました。
次に設定を行いたいのですが
http://home.att.ne.jp/zeta/gen/excel/c04p58.htm
このページにあるように
Dim window1 As Window
Set window1 = Windows("Google - Internet Explorer") 'アプリケーションウィンドウを対象
window1.WindowState = xlNormal '通常表示に設定します。
window1.Width = 800 'ウィンドウ幅を800に設定
window1.Height = 300 'ウィンドウの高さを300に設定
とやってみましたが
インデックスが有効範囲にありません
というエラーが出てしまいます。
どうすれば良いでしょうか?
あと気になっているのですが
幅及び高さの単位はポイントです。(ピクセルでは無いので注意して下さい)。
と書かれてありますが、
ピクセルからポイントへはどのように換算すれば良いのでしょうか?
No.1ベストアンサー
- 回答日時:
2つ目のリンクの説明はExcel内のウィンドウを扱うものですから、質問の件の参考にはなりません。
1つ目のリンクの例のように、WindowsAPIを呼び出す必要あります。
WindowsAPIはC言語の関数の体裁をしていますので、理解するには若干のC言語の知識が必要です。
ウィンドウのサイズ変更は SetWindowPos 関数でできました。関数の説明はここにあります。
https://msdn.microsoft.com/ja-jp/library/cc41120 …
-----------------------------------------------------
Option Explicit
'ウィンドウ位置を維持する
Public Const SWP_NOMOVE = &H2&
'ウィンドウのZオーダーを維持する
Public Const SWP_NOZORDER = &H4&
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As Long
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 ChangeRect()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, "無題 - メモ帳")
Call SetWindowPos(hWnd, -1, -1, -1, 400, 300, SWP_NOMOVE Or SWP_NOZORDER)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excel グラフのプロットエリアについて 2 2022/08/26 18:12
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
-
4
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
5
MoveWindowで位置だけ変更するには?
Visual Basic(VBA)
-
6
SetWindowPosについて
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
UserForm1.Showでエラーになります。
工学
-
9
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
エクセルのマクロで特定フォルダ内のJPGファイルを検索して開きたいので
Excel(エクセル)
-
12
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
13
【Excel VBA】ウィンドウサイズ変更イベント
Excel(エクセル)
-
14
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
15
Excel VBAで他アプリケーションの文字列取得
Excel(エクセル)
-
16
【マクロ】フォルダを2つのモニターの定位置に並べたい
Excel(エクセル)
-
17
【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法
Excel(エクセル)
-
18
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
19
メモ帳を開くと毎回同じ位置・サイズにしたいです。
Windows Me・NT・2000
-
20
ExcelのVBAでフォームが表示されない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
子ウィンドウより親ウィンドウ...
-
VBAで任意のウインドウのサイズ...
-
前面(一番上)のページのみ処理...
-
プルダウンメニューからのリン...
-
孫ウインドウを閉じたら親をリ...
-
親ウィンドウと同時に子ウィン...
-
子ウィンドウから親ウィンドウ...
-
ブラウザ(IE)からエクスプロー...
-
デスクトップ画面を4分割するには
-
javascriptで開いたウィンドウ...
-
テーブルの<trでウィンドウAを...
-
パブリッシュすると再生速度が...
-
ポップアップと作業ウィンドウ...
-
同じURLのフォームが開いている...
-
初心者javascript グーグルクロ...
-
インタネットからPDFファイルだ...
-
Javascript_submit()完了後に処...
-
window.close()で確認メッセー...
-
リンク時、親ウインドウを最前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
VBの画面で、全ウィンドウを一...
-
ウィンドウの2重起動を防止したい
-
VBAで任意のウインドウのサイズ...
-
javascriptで開いたウィンドウ...
-
1クリックでモーダルを開いてか...
-
ポップアップと作業ウィンドウ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
子ウィンドウの存在確認
-
子ウィンドウより親ウィンドウ...
-
googleサイトにfacebookのいい...
-
子ウィンドウから親ウィンドウ...
-
初心者javascript グーグルクロ...
-
リンク時、親ウインドウを最前...
-
子ウィンドウから親ウィンドウ...
-
JavaScriptで指定Windowを最大...
-
親ウィンドウから開いた子ウィ...
おすすめ情報
ありがとうございます。
ウインドウの位置・サイズの変更はできました。
ただ一つ問題なのですが
SetWindowPosではモニター座標でのクライアント領域の座標を指定する必要があります。
一方で、
GetWindowRectではモニター座標(0,0)を原点とした非クライアント領域の位置座標
GetClientRectではクライアント座標(0,0)を原点としたクライアント領域の位置座標
を得ることができます。
しかしながらこれらの方法を組み合わせても
クライアント領域のモニター座標を得ることができません。
どうすればモニター座標(0,0)を原点とした
クライアント領域の座標を得ることができますでしょうか?