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も見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
vbaから他のアプリを終了
Visual Basic(VBA)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
MoveWindowで位置だけ変更するには?
Visual Basic(VBA)
-
12
ウィンドウのタイトルからプロセス取得
Visual Basic(VBA)
-
13
親ウインドウにあるOKボタンを押す方法
Visual Basic(VBA)
-
14
ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法
Visual Basic(VBA)
-
15
開いたとき常に同じ大きさ・位置で表示したい
Windows 7
-
16
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
-
17
【マクロ】フォルダを2つのモニターの定位置に並べたい
Excel(エクセル)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
20
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
子ウィンドウの存在確認
-
excel vbaでウィンドウの整列を...
-
window.Openをモーダルにできま...
-
サブウィンドウから親ウィンド...
-
ウィンドウ名からウィンドウオ...
-
ウィンドウの2重起動を防止したい
-
自身ウィンドウが親か子かを調...
-
リンク時、親ウインドウを最前...
-
ポップアップと作業ウィンドウ...
-
子ウィンドウから親ウィンドウ...
-
VBAで任意のウインドウのサイズ...
-
ウインドウの親子連携について
-
VBの画面で、全ウィンドウを一...
-
ブラウザ(IE)からエクスプロー...
-
javascriptで開いたウィンドウ...
-
子ウィンドウを常に手前表示、...
-
同じURLのフォームが開いている...
-
デジタル時計の時刻合わせの方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
ウィンドウの2重起動を防止したい
-
VBAで任意のウインドウのサイズ...
-
VBの画面で、全ウィンドウを一...
-
ポップアップと作業ウィンドウ...
-
ブラウザ(IE)からエクスプロー...
-
デスクトップ画面を4分割するには
-
<EXCEL/VBA> OUTLOOKのウインド...
-
子ウィンドウの存在確認
-
子ウィンドウから親ウィンドウ...
-
1クリックでモーダルを開いてか...
-
JavaScriptで指定Windowを最大...
-
子ウィンドウより親ウィンドウ...
-
リンク時、親ウインドウを最前...
-
子ウィンドウを常に手前表示、...
-
ウィンドウ名からウィンドウオ...
-
window.close()で確認メッセー...
-
孫ウインドウを閉じたら親をリ...
-
ビルダーでポップアップウィン...
おすすめ情報
ありがとうございます。
ウインドウの位置・サイズの変更はできました。
ただ一つ問題なのですが
SetWindowPosではモニター座標でのクライアント領域の座標を指定する必要があります。
一方で、
GetWindowRectではモニター座標(0,0)を原点とした非クライアント領域の位置座標
GetClientRectではクライアント座標(0,0)を原点としたクライアント領域の位置座標
を得ることができます。
しかしながらこれらの方法を組み合わせても
クライアント領域のモニター座標を得ることができません。
どうすればモニター座標(0,0)を原点とした
クライアント領域の座標を得ることができますでしょうか?