You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB6如何获取当前运行脚本的文件名(类Python __file__功能)

在VB6中获取当前运行的.bas模块文件名

首先要明确:VB6的.bas是标准模块文件,无法像Python脚本那样单独运行,它必须隶属于某个VB工程(EXE/DLL/OCX等)。因此需要分两种场景处理:


1. IDE调试环境下获取当前执行代码所在的.bas文件名

可以借助VB的IDE对象模型遍历工程模块,结合错误行号定位当前模块。示例代码如下:

Function GetCurrentBasFileName() As String
    Dim vbProj As VBIDE.VBProject
    Dim vbComp As VBIDE.VBComponent
    Dim currentLine As Long
    
    ' 触发临时错误以获取当前代码行号
    On Error Resume Next
    Err.Raise 1
    currentLine = Erl()
    On Error GoTo 0
    
    ' 关联当前活动工程
    Set vbProj = App.VBE.ActiveVBProject
    
    ' 遍历所有标准模块
    For Each vbComp In vbProj.VBComponents
        If vbComp.Type = vbext_ct_StdModule Then
            ' 验证当前行是否属于该模块
            If vbComp.CodeModule.ProcOfLine(currentLine, vbext_pk_Proc) <> "" Then
                GetCurrentBasFileName = vbComp.Name & ".bas"
                Exit Function
            End If
        End If
    Next vbComp
    
    GetCurrentBasFileName = "无法识别模块"
End Function

注意事项:

  • 需要在VB6 IDE中启用「信任对VB工程对象模型的访问」:依次点击「工具」→「选项」→「编辑器」,勾选对应选项。
  • 该方法仅在IDE调试时有效,编译为EXE后无法使用。

2. 编译为EXE后获取模块标识

VB6编译为EXE时,原始的.bas文件名不会被保留在程序中,无法直接获取。如果需要在运行时区分不同模块,建议在每个.bas模块中定义一个常量来标识自身:

' 在Module1.bas中定义
Public Const MODULE_FILENAME As String = "Module1.bas"

' 在Module2.bas中定义
Public Const MODULE_FILENAME As String = "Module2.bas"

之后在代码中需要的位置,直接引用MODULE_FILENAME即可得到当前模块的文件名标识。


补充:如果你的需求是获取当前运行的EXE文件名,可以用App.EXEName & ".exe";CurDir()仅返回当前工作目录,和模块/EXE的实际路径、文件名无关。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:23