お世話になります。
以下の問題の探し方を教えてください。
自分で作成したものでない(作成者は社内にいない)
30前後のシートが入っているエクセルファイルがあります。
そういうファイル(群)を解析しています。
あるマクロのメソッド「商品検索」というものが書かれているとします。
ぱっと見では使われていないような感じもします。
しかし厳密にしたいので、そのメソッドがどこで(どのシート、どのボタン等)呼ばれているか、
を調べたいのですが、うまい方法はありませんでしょうか。
このエクセルファイル群は、初めに使えそうなエクセルファイルから
始まり、様々な方がその基本となったエクセルを元にして、
いろいろ修正、追加、削除しながら分派、育っていったファイルらしく、
数年の経てそれぞれ目的が違うファイルに仕上がってます。
その数が数だけにモジュールの中にあるメソッドが「使われているか」を手早く知りたいのです。
ですので、一つ一つ右クリックで調べる以外の方法を探しています。
手段でもツールの使用でもかまいません。
どなたか教えていただけませんでしょうか。
No.1ベストアンサー
- 回答日時:
こういうのはどうでしょうか?
各シートに配置されたボタン等のオブジェクトを検索し、それにマクロが登録されていればシート名、オブジェクト名およびマクロ名を新しいワークシート(一番右端に生成します)にリストアップするマクロです。(マクロが登録されていないオブジェクトはリストに入れません。)
Sub test01()
Set ns = Sheets.Add(After:=Sheets(Sheets.Count))
For Each st In Worksheets
st.Activate
For Each obj In ActiveSheet.DrawingObjects
If obj.OnAction <> "" Then
i = i + 1
With ns
.Cells(i, "A") = ActiveSheet.Name
.Cells(i, "B") = obj.Name
.Cells(i, "C") = obj.OnAction
End With
End If
Next
Next
Set ns = Nothing
End Sub
merlionXXさんありがとうございます。
早速試してみました。
すばらしいです。
私がほしい情報そのものです。
ありがとうございました。
使わせていただきます。
No.3
- 回答日時:
うっはNo1さんともろかぶりな内容。
しかもコード短くて結果も集計しやすいかも。
No1さんのを使ってやってください。
kenpon24さん、ありがとうございます。
merlionXXさんもですが、なるほどそうですね、というもので
わかりやすくて、これを参考・基本にして他もできそうです。
全シート、全セルでオブジェクトを引っ掛けて中身を取るんですね。
本当に「なるほど・・・」という気持ちでいっぱいです。
ありがとうございました。
No.2
- 回答日時:
シート内のオブジェクトから呼び出しているものを知りたいという前提で書きます。
全シートのオブジェクトに登録されているマクロを集計シートに書き出すマクロを書いてみました。
集計するにはあまりよくない書き出し方かも。
Sub 全シートのマクロ書き出し()
Dim shape As Object
Dim ws As Worksheet
Dim i As Long
Const temp As String = "呼び出し元集計"
i = 1
On Error GoTo SheetNothing
with Worksheets(temp)
.Activate
.Cells.ClearContents '初期化。もしtempと同じ名前のシートがある場合は注意
end with
'全シート調査
For Each ws In ActiveWorkbook.Worksheets
Worksheets(temp).Cells(i, 1) = ws.Name 'シート名書き出し
i = i + 1
'全図形調査
For Each shape In ws.Shapes
'マクロが登録されているとき
If shape.OnAction <> "" Then
'マクロ名を書き出す
Worksheets(temp).Cells(i, 1) = shape.OnAction
i = i + 1
End If
Next
i = i + 1
Next
Worksheets(temp).Activate
Set shape = Nothing
Set ws = Nothing
Exit Sub
SheetNothing:
'シートがないときは作成する
Worksheets.Add
Worksheets(Worksheets.Count).Name = temp
Resume
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
- Excel(エクセル) エクセルのファイルを複数のPCで同期する方法は? 7 2022/11/23 17:35
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
或るプロシージャの呼び出し元判定
その他(Microsoft Office)
-
Excel VBA でFunctionプロシジャがどのセルから呼び出されたか知る方法
Visual Basic(VBA)
-
エクセルのマクロボタンが編集できません
Excel(エクセル)
-
-
4
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
5
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
6
VB6で呼び出し元の情報を取得する方法について
Visual Basic(VBA)
-
7
EXCELをバッチコマンドで起動したとき、引数を渡せますか
その他(プログラミング・Web制作)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
10
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
13
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
14
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
15
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
プロシージャを呼び出したプロシージャ名を知る方法は?
Visual Basic(VBA)
-
18
フォームに引数を渡す方法のやり方
Visual Basic(VBA)
-
19
Accessのフォームで開く時のウィンドウサイズを指定する
Access(アクセス)
-
20
EXCELのマクロの重複起動の禁止
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【 Excel】シートの見出しに自...
-
VBAで条件によってシート見出し...
-
マクロを複数シートに実行する...
-
Excelで,特定のシートを開いた...
-
複数シートの保護・解除
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
マクロでのシートコピー数制限?
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
VBAで作るexcel検索窓
-
エクセルでシートの並び替えで...
-
VBA シート名を先月の名前に...
-
Excelのマクロの呼び出し元を知...
-
エクセルを閉じる際に自動保存...
-
エクセル シート保護をかける...
-
Excelでたくさんのシートで設定...
-
エクセル2000VBA コマンドボタ...
-
Excel:複数シートから条件に合...
-
マクロで複数シートに条件付き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
EXCELでワークシートを開いたら...
-
エクセルを開いたとき常に同じ...
-
VBAで条件によってシート見出し...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセルで回数をカウントする...
-
EXCELのエラー
-
Excel:複数シートから条件に合...
-
VBA シート名を先月の名前に...
-
EXCELの起動時に常に同じ...
-
Excelで,特定のシートを開いた...
-
Excelのマクロの呼び出し元を知...
-
メッセージボックスでシート名...
おすすめ情報