【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

タイトルの件、下記の画像をご覧ください。
全部で4つのフォルダを下記の画像のように
並べるマクロを教えて下さい。

2つのモニターを並べています
【マルチモニター】

画像のとおり、左のモニターに3つのフォルダ
右のモニターに1つのフォルダです。

画像のようにぴったりくっていなくても
スキマが少しあってもいいです


出来れば、フォルダを開くところから
スタートするマクロが良いです。

フォルダを開くだけのマクロは下記のコードのとおりです。

ご存じのかた、いましたらよろしくお願いします


【フォルダパス】
C:\Users\2020\Desktop\フォルダA

C:\Users\2020\Desktop\フォルダB

C:\Users\2020\Desktop\フォルダC


【フォルダA、フォルダb、フォルダC、フォルダDを開くマクロ・コード】※動作確認済
Const 半角スペース = """"

Sub sample()

Dim Apath As String
Dim Bpath As String
Dim Cpath As String
Dim Dpath As String


Apath = "C:\Users\2020\Desktop\フォルダ A"

Bpath = "C:\Users\2020\Desktop\フォルダ B"

Cpath = "C:\Users\2020\Desktop\フォルダ C"

Dpath = "C:\Users\2020\Desktop\フォルダ D"



CreateObject("WScript.Shell").Run 半角スペース & Apath & 半角スペース

CreateObject("WScript.Shell").Run 半角スペース & Bpath & 半角スペース

CreateObject("WScript.Shell").Run 半角スペース & Cpath & 半角スペース

CreateObject("WScript.Shell").Run 半角スペース & Cpath & 半角スペース



End Sub

「【マクロ】フォルダを2つのモニターの定位」の質問画像

A 回答 (2件)

こんばんは


回答する事で質問者は考える事をしなくなるのではないか・・
回答する時にいつも考えてしまいます。
少なくともそのような事は望んでいません。

個人的希望を書いても意味がないとは思いますが、
自身で考える事をやめてはいけません
作る側の人ならば、
回答で得た結果がなぜそうなるのかを探求しなくては意味がありませんよ
理解した部分を織り込みながらご質問して頂くのが好いと思います

本題
ご質問の場合、すでに質問され回答しています
https://oshiete.goo.ne.jp/qa/13121361.html
の応用で 汎用性には欠けるものではありますが出来ます
汎用性のあるものにするためには、各モニターの座標など設定を取得する
他のAPIも使う必要が出て来ます
そのコードを改めて示しても多分・・(難しくなるだけで、スタッグや環境により不具合の可能性も増えると思います)

先の回答のコードは動いたとの事なので、それを基軸に回答すると
(想定条件)環境により(変わる)変える必要がある項目
左のモニターがモニター1(メイン)
モニター1とモニター2は同じ大きさ
対象パスを4つに増やす

(Dim Rt As RECTとしています)
この場合の左モニターの表示(配置)コードはどのように書きますか?
位置が変わっていますが、先の回答した内容を少し変えれば良いですね

ちなみにメインモニター(タスクバーを除く)左上の座標はRt.Left

では右モニターの左上座標は
先のコードで示すとRt.Right + α
左モニターの右側のさらに右が 右モニターの左はしになります
Windowsから見るとそのような座標になります

つたない説明で申し訳ないのですが、これだけ理解出来たら、実験をしてみてください。そうすれば、少なくともお使いの環境にあったものは作成できると思います

*方法は、一例です 違うアプローチ、ロジックも考えられますので
 参考程度でお願いします
    • good
    • 0
この回答へのお礼

大変難しいですねぇ。勉強いたします。ご指導ありがとうございます。

お礼日時:2022/09/06 20:21

こんにちは。



マルチモニタ環境だとモニタ毎に解像度やスケールが異なる場合があって、とても面倒です。WindowsAPI でガリガリに書けなくはないですけど、、

前回のご質問は他ご回答で上手くいったようですね。良かったです。後は最後のウインドウについてですよね。

代案ですが、最後のウインドウはショートカットキーでモニタ移動してみては?

Windowsキー + Shift + →矢印キー
アクティブウインドウを次のモニタに移動します。

Windowsキー + ↑矢印キー
ウィンドウを最大化

これらを VBA.Sendkeys でキー送信します。

実際のキー操作なら上手くいくが、sendkeysで上手く送信できない場合は、kb_event か sendinput などのAPI に変えてみます。

未確認です。アイディアまで。
    • good
    • 0
この回答へのお礼

いろいろ教えて頂きまして、ありがとうございます。

お礼日時:2022/09/03 12:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A