|
当方の環境では、不具合は再現されず、お役に立てそうにありません。
取り敢えず、下記の通り現在の結論を掲示しておきます。
1.時間待ちについて
「純正Word VBA」とShellアプリケーションの連携で
時間待ちが必要とすれば…
(画面が落ち着きなく動いているのを見ると、確かに言えます。)
WhiteRabbitさんのマクロは的を得ていると思います。
2.恐縮ながら「Windows.Arrange」を再登場させました。
これはショック療法のようなもので
「純正Word VBA」で一旦は上下に並べて表示しておき、
それをShellアプリケーションで左右に表示すればどうかと再考しました。
3.「Application.ScreenUpdating」は、
全く効き目がないようです。
(「途中経過」が画面上に表示されます。)
結果だけをパッと表示するということは、
ウィンドウ操作を伴う処理では全く働かないということのようです。
当件については、私の脳味噌は力尽きております。
ここで言えることは、私の理屈よりもWhiteRabbitさんの経験のほうが
勝るということです。
修羅場を潜り抜けていらっしゃるようですが、
そういう方こそ良き作譜者です。
Sub WinWordArrangeA()
' 参照設定 Microsoft Shell Controls And Automation
'
Dim myShell As Shell32.Shell
Dim windowLoop As Window
Dim myTimer As Single
'
Set myShell = CreateObject("Shell.Application")
myShell.MinimizeAll
'
myTimer = Timer + 5
Do Until myTimer < Timer
DoEvents
Loop
Application.ScreenUpdating = False ' 効果なし
For Each windowLoop In Windows
With windowLoop
.Activate
.WindowState = wdWindowStateMaximize
End With
Next windowLoop
Windows.Arrange ' (?!)
Application.ScreenUpdating = True ' 効果なし
'
myTimer = Timer + 5
Do Until myTimer < Timer
DoEvents
Loop
myShell.TileVertically ' 左右に並べて表示
'
Set myShell = Nothing
End Sub
|
|