|
飛ばない豚さん
> クリップボードクリアは、検索すると結構出てきます。
> 一応、よさげなものをパクってきました。
ではなくて、モーグからの一言を添えて欲しいのですが。
元スレのGoogleのキャッシュ
www.google.co.jp/search?q=cache:www2.moug.net/bbs/exvba/20061015000010.htm
> Application.Visible = True
> Application.Wait Now + TimeSerial(0, 0, 1)
は、 目視確認のために入れただけで不要です。
> また、クリップボードクリアの際(シートがアクティブの際)に、
> 作業ウィンドウが表示されます。
> このウィンドウの消し方は分かりませんでした。(分かる方、ヘルプです)
該当するウィンドウにWM_CLOSEメッセージを送信すれば
いいようです。
IAccessibleについては、
Active Accessibility 2.0 SDK Tools
でGoogle検索すると出てくる「AccExplorer32.exe」とか、
オブジェクト ブラウザで、
右クリックから「非表示のメンバを表示」で確認できると思います。
ちなみにVB6では
「C:\WINDOWS\system32\oleacc.dll」への参照設定が必要になります。
たまたま、検索でヒットしたのでレスをしましたが、
こちらのサイトを拝見することは、ほとんどありません。
------------------------
'Microsoft Office のライブラリに参照設定要(既定で参照済み)
Private Declare Function AccessibleObjectFromWindow Lib "oleacc" _
(ByVal hWnd As Long, ByVal dwId As Long, _
riid As Any, ppvObject As Any) As Long
Const OBJID_CLIENT = &HFFFFFFFC
Private Declare Function IIDFromString Lib "ole32" _
(lpsz As Any, lpiid As Any) As Long
Const IID_IAccessible = "{618736E0-3C3D-11CF-810C-00AA00389B71}"
Private Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Const WM_CLOSE = &H10
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Sub test()
Dim IID(0 To 3) As Long
Dim acc As IAccessible
Dim h As Long, hWnd As Long
Application.CommandBars("worksheet menu bar").Controls("編集(&E)") _
.Controls("Office クリップボード(&B)...").Execute
h = FindWindowEx(Application.hWnd, 0, "EXCEL2", vbNullString)
hWnd = FindWindowEx(h, 0, "MsoCommandBar", "作業ウィンドウ")
h = FindWindowEx(hWnd, 0, "MsoWorkPane", vbNullString)
h = FindWindowEx(h, 0, "bosa_sdm_XL9", vbNullString)
' ウィンドウからIAccessibleを取り出す
IIDFromString ByVal StrPtr(IID_IAccessible), IID(0)
If AccessibleObjectFromWindow( _
h, OBJID_CLIENT, IID(0), acc) < 0 Then
Exit Sub ' エラー時
End If
'すべてクリアボタンの実行。
acc.accDoDefaultAction 2&
Set acc = Nothing
' 作業ウィンドウ(MsoCommandBar)を閉じる。
PostMessage hWnd, WM_CLOSE, 0, 0
End Sub
|
|