Excel VBA質問箱 IV

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

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


740 / 13645 ツリー ←次へ | 前へ→

【78610】フォームコントロールボタン内容抽出(Excel) でじ 16/11/28(月) 18:05 質問[未読]
【78612】Re:フォームコントロールボタン内容抽出(Excel) β 16/11/28(月) 18:38 発言[未読]
【78613】Re:フォームコントロールボタン内容抽出(Excel) β 16/11/28(月) 18:47 発言[未読]

【78610】フォームコントロールボタン内容抽出(Excel)
質問  でじ  - 16/11/28(月) 18:05 -

引用なし
パスワード
   Activexコントロールのボタンであれば、プロジェクトエクスプローラで
ボタンが配置されているシート選択し、右クリックの「ファイルのエクスポート」
により出力されるclsファイルに以下の様に書かれます。
Private Sub CommandButton1_Click()
Call macro名
End Sub

しかしフォームコントロールボタンの「マクロの登録」で設定された内容は
clsファイルにに出力されません。
会社で作成された数あるEXCELツールファイルのボタンに
何が設定されているのか把握したいのですが、
Activexボタンとフォームコントロールボタンが混在しています
ファイル数・シート数も多いので機械的に調べる方法があれば
教えて頂けるでしょうか?

【78612】Re:フォームコントロールボタン内容抽出(Excel)
発言  β  - 16/11/28(月) 18:38 -

引用なし
パスワード
   ▼でじ さん:

まず、プロジェクトエクスプローラで、シートを選択してエクスポートされるのは
固有のActiveX処理コードではなく、それが書かれているシートモジュール全体です。
Private Sub CommandButton1_Click も『たまたま』そこに書かれているだけです。

フォームコントロールに登録されたマクロは、当該ボタンを右クリックしてマクロの登録を選ぶと
小さなダイアログボックスの上に、そのマクロ名が表示されています。
その横の 編集ボタンをおせば、そのマクロが書かれているモジュールが表示され
そのマクロの場所にカーソルがあります。

多くは標準モジュールに書かれていると思いますが、プロジェクトエクスプローラで
そのモジュールを選択してエクスポートすると、シートモジュールと同じく
ファイルとして出力されます。
標準モジュールの場合は、拡張子が bas になりますが。

【78613】Re:フォームコントロールボタン内容抽出(Excel)
発言  β  - 16/11/28(月) 18:47 -

引用なし
パスワード
   ▼でじ さん:

>ファイル数・シート数も多いので機械的に調べる方法があれば
>教えて頂けるでしょうか?

フォームツールのボタンのみですが。
ブックの最後にシートを追加して列挙します。
どのモジュールなのかの情報はいれていませんが。
(いれるには面倒なことをしなければいけないので)

Sub Test()
  Dim cb As Button
  Dim shF As Worksheet
  Dim shT As Worksheet
  Dim pos As Range
  
  Set shT = Worksheets.Add(After:=Worksheets(Worksheets.Count))
  shT.Range("A1:C1").Value = Array("シート名", "ボタン名", "マクロ名")
  Set pos = shT.Range("A2")
  
  For Each shF In Worksheets
    For Each cb In shF.Buttons
      pos.Resize(, 3).Value = Array(shF.Name, cb.Name, cb.OnAction)
      Set pos = pos.Offset(1)
    Next
  Next
  
End Sub

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