Excel VBA質問箱 IV

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

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


72026 / 76733 ←次へ | 前へ→

【9195】Re:VBEウインドウ上にUserFormを表示するには
回答  bykin  - 03/11/20(木) 22:02 -

引用なし
パスワード
   こんばんわ。

>ユーザーインターフェイスはごく自然なかたちにしたいのです。
あんまり凝らんでもええと思うねんけど・・・
VBEのユーティリティなんて使うのはそこそこスキルのある人やろうから
あらかじめ説明しておけば済むような気ぃすんねんけどな。

ま、どーしてもってことやったら、こんなんかな?

'(標準モジュール)
Private CB As New Class1

Public Declare Function FindWindow Lib "user32" _
            Alias "FindWindowA" _
            (ByVal lpClassName As String, _
            ByVal lpWindowName As String) As Long

Public Declare Function SetParent Lib "user32" _
            (ByVal hWndChild As Long, _
            ByVal hWndNewParent As Long) As Long

Sub TestMacro()
  Load UserForm1
  UserForm1.Show
  Unload UserForm1
End Sub

Sub CreateCommandbar()
  On Error Resume Next
  With Application.VBE
    .CommandBars("TEST").Delete
    With .CommandBars.Add(Name:="TEST", Temporary:=True)
      With .Controls.Add
        .Style = msoButtonCaption
        .Caption = "マクロ起動ボタン"
      End With
      .Visible = True
    End With
    Set CB.CBE = .Events.CommandBarEvents(.CommandBars("TEST").Controls(1))
  End With
End Sub

'(クラスモジュール−Class1)
Public WithEvents CBE As CommandBarEvents

Private Sub CBE_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
  TestMacro
End Sub

'(フォームモジュール−UserForm1)
Private Sub UserForm_Initialize()
  Dim hWndFrm As Long
  Dim hWndVBE As Long
  Dim Ret As Long
  
  hWndFrm = FindWindow("ThunderDFrame", vbNullString)
  hWndVBE = FindWindow("wndclass_desked_gsk", vbNullString)
  Ret = SetParent(hWndFrm, hWndVBE)
End Sub

フォームが1個しかないんやったら、API宣言はフォームモジュールに
移動させてPrivate宣言してもかまいまへん。
CreateCommandbar()を実行するとVBEにコマンドバーが追加されるので、
そこのボタンを押すとフォームが表示されます。

VBかOfficeDeveloperでCOMアドイン(DLL)作るのが本筋とも思うけど・・・
ま、お暇やったら試してみてな。
ほな。
2 hits

【9145】VBEウインドウ上にUserFormを表示するには mbi2 03/11/19(水) 14:33 質問
【9148】Re:VBEウインドウ上にUserFormを表示するには INA 03/11/19(水) 15:13 回答
【9166】Re:VBEウインドウ上にUserFormを表示するには bykin 03/11/19(水) 20:54 回答
【9167】Re:VBEウインドウ上にUserFormを表示するには ichinose 03/11/19(水) 22:25 発言
【9168】Re:VBEウインドウ上にUserFormを表示するには INA 03/11/19(水) 22:55 回答
【9177】Re:VBEウインドウ上にUserFormを表示するには mbi2 03/11/20(木) 13:05 質問
【9178】Re:VBEウインドウ上にUserFormを表示するには INA 03/11/20(木) 14:11 回答
【9193】Re:VBEウインドウ上にUserFormを表示するには mbi2 03/11/20(木) 18:51 発言
【9195】Re:VBEウインドウ上にUserFormを表示するには bykin 03/11/20(木) 22:02 回答
【9199】Re:VBEウインドウ上にUserFormを表示するには mbi2 03/11/20(木) 23:47 発言
【9206】Re:VBEウインドウ上にUserFormを表示するには bykin 03/11/22(土) 17:44 回答
【9412】Re:VBEウインドウ上にUserFormを表示するには mbi2 03/12/3(水) 12:39 お礼

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