Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36308 / 76732 ←次へ | 前へ→

【45607】Re:集計されたシートについて。
回答  通ってみた  - 07/1/6(土) 13:12 -

引用なし
パスワード
   飛ばない豚さん

> クリップボードクリアは、検索すると結構出てきます。
> 一応、よさげなものをパクってきました。

ではなくて、モーグからの一言を添えて欲しいのですが。

元スレの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

1 hits

【45077】集計されたシートについて。 無頼斎 06/12/12(火) 11:34 質問
【45085】Re:集計されたシートについて。 飛ばない豚 06/12/12(火) 14:18 発言
【45329】Re:集計されたシートについて。 無頼斎 06/12/19(火) 16:57 発言
【45353】Re:集計されたシートについて。 飛ばない豚 06/12/20(水) 13:06 発言
【45472】Re:集計されたシートについて。 無頼斎 06/12/25(月) 20:53 お礼
【45607】Re:集計されたシートについて。 通ってみた 07/1/6(土) 13:12 回答
【45610】Re:集計されたシートについて。 飛ばない豚 07/1/6(土) 16:27 発言
【45659】Re:集計されたシートについて。 通ってみた 07/1/9(火) 13:02 発言
【45678】Re:集計されたシートについて。 通ってみた 07/1/10(水) 13:20 発言

36308 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free