
お世話になります。
以下の問題の探し方を教えてください。
自分で作成したものでない(作成者は社内にいない)
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
excelファイルに使われているVBAやマクロを調べるには
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
プロシージャ名の取得
Visual Basic(VBA)
-
7
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
8
VB6で呼び出し元の情報を取得する方法について
Visual Basic(VBA)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
Excel VBA Application.caller エラー2023について
Visual Basic(VBA)
-
11
プロシージャを呼び出したプロシージャ名を知る方法は?
Visual Basic(VBA)
-
12
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
13
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
14
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
15
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
複数の文字列のいずれかが含まれていたらTRUEを返す関数について
Excel(エクセル)
-
18
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
19
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
20
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELでワークシートを開いたら...
-
【 Excel】シートの見出しに自...
-
VBA シート名を先月の名前に...
-
エクセルでシートの並び替えで...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセル・複数のシートを一度...
-
メッセージボックスでシート名...
-
マクロで複数シートに条件付き...
-
エクセルWEBクエリで毎回変...
-
Excelのマクロの呼び出し元を知...
-
VBAで条件によってシート見出し...
-
エクセル2007でできていたV...
-
エクセルのチェックボックス
-
エクセルシート内での閲覧制限
-
マクロ 各シートの決められた位...
-
エクセルVBAでcmbBoxのプロパテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
EXCELでワークシートを開いたら...
-
エクセルでシートの並び替えで...
-
EXCELでマクロを使わずに図形の...
-
Excelのマクロの呼び出し元を知...
-
マクロを特定の複数シートで実...
-
メッセージボックスでシート名...
-
マクロ 各シートの決められた位...
-
VBA シート名を先月の名前に...
-
エクセルの複数のワークシート...
-
EXCELの起動時に常に同じ...
-
エクセルで、マクロボタンの表...
-
EXCELのエラー
-
エクセルVBAでcmbBoxのプロパテ...
-
VBAで条件によってシート見出し...
-
エクセル・複数のシートを一度...
-
エクセルで回数をカウントする...
おすすめ情報