
タイトルの件、下記の画像をご覧ください。
全部でみつのフォルダを下記の画像のように
並べるマクロを教えて下さい。
出来れば、フォルダを開くところから
スタートするマクロが良いです。
フォルダを開くだけのマクロは下記のコードのとおりです。
【フォルダパス】
C:\Users\2020\Desktop\フォルダA
C:\Users\2020\Desktop\フォルダB
C:\Users\2020\Desktop\フォルダC
【フォルダA、フォルダb、フォルダCを開くマクロ・コード】※動作確認済
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"
CreateObject("WScript.Shell").Run 半角スペース & Apath & 半角スペース
CreateObject("WScript.Shell").Run 半角スペース & Bpath & 半角スペース
CreateObject("WScript.Shell").Run 半角スペース & Cpath & 半角スペース
End Sub

No.4ベストアンサー
- 回答日時:
こんにちは
動く環境で良かったです
>●フォルダパスを指定していないですが、なぜ、フォルダちゃんと開くのでしょうか?
これに関しては、
スッキリした解り易い解説(参考)サイトが良かったかも知れませんが
内容の一文が代弁してくれていますのでこちらを確認してみてください
http://www.ken3.org/vba/backno/vba114.html
No.3
- 回答日時:
こんにちは
WindowsAPIのSystemParametersInfoとShowWindowを使用して
移動、サイズ変更時の事を考えてCreateObject("WScript.Shell").Runはやめて(寄せ集め手持ちが違っていたので・・)
Option Explicit
Private Declare PtrSafe Function ShowWindow Lib "user32" ( _
ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long
Private Declare Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" ( _
ByVal uAction As Long, _
ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long) As Long
'構造体
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Sub example()
Dim aryPath(0 To 2)
Dim wsh As Object
Dim ds As String
Const 半角スペース = """"
Set wsh = CreateObject("WScript.Shell")
ds = wsh.SpecialFolders("Desktop")
'? フォルダ 半角スペースはあるの?A
aryPath(0) = ds & "\フォルダ A"
aryPath(1) = ds & "\フォルダ B"
aryPath(2) = ds & "\フォルダ C"
Dim Rt As RECT
Call SystemParametersInfo(48, 0, Rt, 0) '48有効サイズ
Dim Lpt As Long, Tpt As Long, wd As Long, ht As Long
wd = Rt.Right - Rt.Left
ht = Rt.Bottom - Rt.Top
Dim objShell As Object
Dim lgWnd As Long
Dim i As Integer
Set objShell = CreateObject("Shell.Application")
For i = 0 To UBound(aryPath)
lgWnd = objShell.Windows.Count
Shell "C:\Windows\Explorer.exe " & aryPath(i), vbNormalFocus
Do
DoEvents
Loop Until objShell.Windows.Count > lgWnd
If i = 0 Then Lpt = Rt.Left: Tpt = Rt.Top: wd = wd / 2: ht = ht
If i = 1 Then Lpt = Rt.Right - wd: Tpt = Rt.Top: ht = ht / 2
If i = 2 Then Lpt = Lpt: Tpt = Rt.Bottom - ht: ht = Tpt
With objShell.Windows(objShell.Windows.Count - 1)
ShowWindow .hwnd, vbNormalFocus
.Left = Lpt
.Top = Tpt
.Width = wd
.Height = ht
End With
Next
End Sub
一例なので上手くいかなかったら忘れてください
すごいです。うまくできました。
質問と補足です。
●フォルダパスを指定していないですが、なぜ、フォルダちゃんと開くのでしょうか?
⇒【フォルダパス】C:\Users\2020\Desktop\フォルダ A
●'? フォルダ 半角スペースはあるの?A
⇒フォルダ A⇒フォルダとAの間に半角スペースがあるのです
No.2
- 回答日時:
こんにちは。
うーん、、大分面倒かなと思います。
私の知る方法は WindowsAPI を幾つか使います。
大まかな流れは次の通り。記憶のみで書いてるので間違いあったらすみません。
1. SystemParametersInfo でプライマリーモニターのタスクバー除きのサイズを調べる
2. 1.の結果から3つのウインドウサイズと位置を計算
3. shell 等でウインドウを開く
4. shell の戻り値を OpenProcess に渡して、ウインドウハンドルを調べる
5. MoveWindow でウインドウの移動、サイズを変更
帰宅して他に回答がなければサンプル書いてみますが、他にもっと簡単な方法があれば私も知りたいです。
No.1
- 回答日時:
こんにちは
直接の回答ではありませんが・・
「POモニター」が何を意味しているのか分かりませんけれど、ご提示のようなレイアウトにするには、
・モニターのサイズを取得する
・フォルダを開いてサイズ・位置を指定する
ことが必要になります。
スクリーンサイズをW、Hとするなら、それぞれのウィンドウ位置を(0,0)、(W/2,0)、(W/2,H/2)に指定し、サイズはw=W/2、h=H(またはH/2)に指定することで可能でしょう。
モニタサイズの取得方法は、例えば
https://www.moug.net/tech/acvba/0020033.html
ウィンドウ位置・サイズの指定は例えば
https://okwave.jp/qa/q8253596.html
などで可能なようですので、これらを組み合わせれば実現できるものと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
VBAで、㉑という数値が、正しく、入力できない
Excel(エクセル)
-
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編
Visual Basic(VBA)
-
4
widows11のメモ帳でExcelのTXTファイルを開きたい
Excel(エクセル)
-
5
【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在
Excel(エクセル)
-
6
エクセルでのVBA
Excel(エクセル)
-
7
Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。
Excel(エクセル)
-
8
Excel マクロで For 文のインデックスを先に宣言する理由
Excel(エクセル)
-
9
Excel Powerクエリーの質問、行数指定は可能でしょうか?
Excel(エクセル)
-
10
エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい
Visual Basic(VBA)
-
11
エクセル VBA For Next 繰り返しの書き方を教えてください
Excel(エクセル)
-
12
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
13
【至急】マクロのカードの書き方を教えてください
Excel(エクセル)
-
14
マクロを簡潔にしたい
Excel(エクセル)
-
15
動かなくなってしまった古いVBAを動くようにしたい
Visual Basic(VBA)
-
16
VBAでのフルパスの取得
Visual Basic(VBA)
-
17
VBA エラーの件
Excel(エクセル)
-
18
再質問です。エクセルでシートが1から31まであり、日付けが入力されているセルがあります。シート1から
Excel(エクセル)
-
19
記録マクロのみでできますか?
Excel(エクセル)
-
20
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
大量のフォルダへのハイパーリ...
-
5
excel VBA 特定の文字列を含む...
-
6
VBA 最新のフォルダ取得
-
7
ディレクトリ数のみを取得する...
-
8
コマンドプロンプトの使い方
-
9
東方紅魔郷をインストールした...
-
10
excel VBA 部分一致の名前をパ...
-
11
エクセルVBA、フォルダ選択時の...
-
12
I386フォルダの役目とは
-
13
鍵マーク付フォルダのユーザ名...
-
14
バッチファイルの親フォルダを...
-
15
お気に入りに追加したのに表示...
-
16
Thunderbird 振り分けされなく...
-
17
NICを2枚差しで、インターネッ...
-
18
Tera Termでのコマンド流し込み...
-
19
ログオン・ログオフスクリプト...
-
20
ブラウザにIPアドレスを直打ち...
おすすめ情報
公式facebook
公式twitter