
No.4ベストアンサー
- 回答日時:
残念ながら出来ません。
私のプロジェクトでは全てのプロシージャに On Error コーディングをして、そこでログにどのプロシージャかを書いてました。
そういう方法しかないと思います。

No.6
- 回答日時:
#1です。
なるほど。
だとすると、やはり、#4さんがご指摘のように、On Errorでエラーを回避して、それぞれにプロシージャ名を手動で書き込んでいくしかないと思います。
月1で発生するエラーなら、頻度は高いといえますし、だからといって、実行ログは取っていられないでしょうから、エラーログで対応するしかないですね。
でも、そのエラーが発生するタイミングに、共通点はないか、とか、エラー発生時の実行環境の状況、エラーメッセージ(メッセージが出ないとお手上げですが)などから、大体の絞込みは出来ないものでしょうか?
いえ、難しいなら、エラーログを取るしかありませんが。
No.5
- 回答日時:
さらにさらに失礼しました。
>CodeModule
実行したら、「関数名」は取れないようです。
実行していない状況に限るようです。
関数名ではなく、モジュール名なら取れそうです。
以前に「GetModuleFileNameEx」をどこかで拾いました。
実行できないのですが、そのまま張っておきます。
http://support.microsoft.com/default.aspx?scid=k …
Option Explicit
Private Declare Function WindowFromPoint Lib "user32" _
(ByVal xPoint As Long, _
ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, _
lpdwProcessId As Long) As Long
Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi" _
(ByVal hProcess As Long, _
ByRef hMod As Long, _
ByVal sizehMod As Long, _
ByRef dwlpdwPIDsize As Long) As Long
Private Declare Function GetModuleFileNameEx Lib "psapi" _
Alias "GetModuleFileNameExA" _
(ByVal hProcess As Long, _
ByVal hMod As Long, _
ByVal szFileName As String, _
ByVal nSize As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const PROCESS_VM_READ = &H10
Private Const MAX_PATH = 260
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim lngApiRet As Long
Dim lnghProcess As Long
Dim lnghModule(512) As Long
Dim strModuleName As String
Dim lngcbNeeded As Long
Dim lngStrLen As Long
Dim i As Integer
Dim lngProcessID As Long
Dim pp As POINTAPI
Dim lngParent As Long
List1.Clear
lngApiRet = GetCursorPos(pp)
lngParent = getTopParent(WindowFromPoint(pp.x, pp.y))
lngApiRet = GetWindowThreadProcessId(lngParent, lngProcessID)
lnghProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or _
PROCESS_VM_READ, _
0&, lngProcessID)
If lnghProcess Then
If EnumProcessModules(lnghProcess, lnghModule(0), _
UBound(lnghModule), lngcbNeeded) Then
For i = 0 To lngcbNeeded / 4 - 1
strModuleName = String(MAX_PATH, Chr(0))
lngStrLen = GetModuleFileNameEx(lnghProcess, _
lnghModule(i), _
strModuleName, _
Len(strModuleName))
strModuleName = Left(strModuleName, lngStrLen)
List1.AddItem Format(lngProcessID, "00#") & _
vbTab & strModuleName
Next i
End If
End If
lngApiRet = CloseHandle(lnghProcess)
End Sub
Private Function getTopParent(ByVal lnghWnd As Long) As Long
getTopParent = IIf(CBool(GetParent(lnghWnd)), getTopParent(lnghWnd), lnghWnd)
End Function
参考URL:http://support.microsoft.com/default.aspx?scid=k …
No.3
- 回答日時:
すいません。
VBEはEXCEL用の場合に限るようです。
VBは
CodeModuleオブジェクトがキーとなるようです。
参考URLのコメント付加アドインのサンプルがヒントとなると思います。
ただし、やはり開発環境に限りで、コンパイルしたらだめっぽいです。
参考URL:http://www.galliver.co.jp/writing/nikkei_tokushu …
No.2
- 回答日時:
とおーい記憶で話しております。
VB6ならデバッグ限定で、確か取れたと思いますよ。
ただしコンパイルしたら取れなかったと思います。
キーワードは「VBE」だったと思います。
「思います」ばかりですいません。

No.1
- 回答日時:
質問の回答としては、「そんなことはできません」だと思います。
ところで、質問を拝見するところ、実行エラーとのことですが、まず、実行ファイル(ってことはexeですか?)にする前に、デバッグできませんか?
デバッグでは起こらない現象ですか?
また、エラーログのとり方を、どのようにお考えですか?
補足をお願いします。
この回答への補足
実行ファイルとはEXEのことです。
エラーというのが、1ヶ月に1回出るかでないようなものです。デバック環境では現状出ていません。
実行マシン(PC)にはVB6の開発環境をインストールしていません。
エラーログは現在下記のように考えています。
あるプロシージャに入ると、そのプロシージャ名をtxt形式でファイルに保存しようと考えています。
以上、説明不足ですみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
【VBA-AC2000】カレントプロシージャ名を取得したい
Visual Basic(VBA)
-
VBAのエラー発生場所をメッセージBOXに表示
Visual Basic(VBA)
-
4
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
5
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
6
或るプロシージャの呼び出し元判定
その他(Microsoft Office)
-
7
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
エクセルVBAでプロシージャ名を取得したい
Excel(エクセル)
-
10
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
11
Access サブフォームでの選択行の取得
その他(データベース)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
DATE型変数を初期化する方法
Visual Basic(VBA)
-
14
プロシージャを呼び出したプロシージャ名を知る方法は?
Visual Basic(VBA)
-
15
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
16
VBAProjectのモジュール存在チェック
Visual Basic(VBA)
-
17
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
18
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
19
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するQ&A
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
実行時エラー -'-2147417848
-
5
実行時エラー3001「引数が間違...
-
6
インデックスが有効範囲にあり...
-
7
VBSで変数の宣言はできないので...
-
8
INSERT INTOステートメント構文...
-
9
VBAのエラー発生場所をメッセー...
-
10
実行時エラー48発生時のDLL特定...
-
11
VB6+SQL サーバー 2000 で 実行...
-
12
workbooks.open 開けないファイ...
-
13
EXCEL VBAマクロ中断でデバッグ...
-
14
プロシージャ名の取得
-
15
ExcelVBA Range クラスの Page...
-
16
VBA Sortメソッドについて
-
17
エラー1004 PDFの保存ができま...
-
18
ADODB.Streamを使用してUTF-8を...
-
19
マクロについて教えてください...
-
20
Invalid procedure call or arg...
おすすめ情報