
お世話になります。
以下の問題の探し方を教えてください。
自分で作成したものでない(作成者は社内にいない)
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)
-
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
-
4
複数の文字列のいずれかが含まれていたらTRUEを返す関数について
Excel(エクセル)
-
5
excelファイルに使われているVBAやマクロを調べるには
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
EXCELファイルに誰がアクセスしたかを見たい
Access(アクセス)
-
8
ファイルのアクセス回数について
Access(アクセス)
-
9
プロシージャ名の取得
Visual Basic(VBA)
-
10
プロシージャを呼び出したプロシージャ名を知る方法は?
Visual Basic(VBA)
-
11
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
12
VB6で呼び出し元の情報を取得する方法について
Visual Basic(VBA)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
Refreshメソッドの使い方
Visual Basic(VBA)
-
15
IIF関数の使い方
Visual Basic(VBA)
-
16
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
17
エクセルVBAの自動変換機能?
Visual Basic(VBA)
-
18
ファイルを開かずにマクロを実行
Excel(エクセル)
-
19
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
20
Excel VBA Application.caller エラー2023について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELのエラー
-
【 Excel】シートの見出しに自...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
Excelのマクロの呼び出し元を知...
-
エクセル・複数のシートを一度...
-
マクロでの全シート内検索
-
エクセルで複数のSheetを一括フ...
-
エクセルでシートの並び替えで...
-
エクセル シート保護をかける...
-
シートの名前を一括変更
-
エクセルのマクロでMACアドレス...
-
Excel:複数シートから条件に合...
-
Excelマクロ(Range)につ...
-
EXCELでワークシートを開いたら...
-
マクロでピボットテーブルが開...
-
エクセルのチェックボックス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
EXCELでワークシートを開いたら...
-
エクセルでシートの並び替えで...
-
Excelのマクロの呼び出し元を知...
-
マクロ 各シートの決められた位...
-
VBA シート名を先月の名前に...
-
メッセージボックスでシート名...
-
複数シートの保護・解除
-
エクセルで、マクロボタンの表...
-
Excel:複数シートから条件に合...
-
エクセルVBAでcmbBoxのプロパテ...
-
EXCELのエラー
-
エクセルで複数のSheetを一括フ...
-
エクセルで串刺ししたシートの...
-
シートを保護した時でも並べ替...
おすすめ情報