Vba 无法在模块VB6中声明字符串

Vba 无法在模块VB6中声明字符串,vba,vb6,Vba,Vb6,我正在尝试从遗留应用程序的文件中读取数据库字符串。为此,我将每个用户的文件放在AppData文件夹中。现在,我需要告诉应用程序文件在哪里。但是,我似乎无法在模块中声明字符串(原始字符串在此模块中声明为常量)。我怎样才能克服这一点?任何帮助都将不胜感激 这就是我所尝试的: Dim loc As String loc = Environ$("APPDATA") Public Const CnnSTR = ReadIniValue(loc & "\PensionMaster\PM-String

我正在尝试从遗留应用程序的文件中读取数据库字符串。为此,我将每个用户的文件放在AppData文件夹中。现在,我需要告诉应用程序文件在哪里。但是,我似乎无法在模块中声明字符串(原始字符串在此模块中声明为常量)。我怎样才能克服这一点?任何帮助都将不胜感激

这就是我所尝试的:

Dim loc As String
loc = Environ$("APPDATA")
Public Const CnnSTR = ReadIniValue(loc & "\PensionMaster\PM-Strings.ini", "DB", "DBSQL")
但是我得到了一个“无效的外部过程”错误

CnnSTR = ReadIniValue(Environ$("APPDATA") & "\PensionMaster\PM-Strings.ini", "DB", "DBSQL"
会有用的。也可以将
Dim CnnSTR作为字符串

Const x=5
y = X
完全一样

y=5
会有用的。也可以将
Dim CnnSTR作为字符串

Const x=5
y = X
完全一样

y=5

蒂姆·威廉姆斯是对的。不要试图将其声明为公共变量,而是创建一个公共函数或属性。我的首选是在.bas模块中创建函数,在类中创建属性

Public Function GetCnnSTR() As String
    Dim loc As String
    Dim strPath as String

    loc = Environ$("APPDATA")
    strPath = ReadIniValue(loc & "\PensionMaster\PM-Strings.ini", "DB", "DBSQL")

    GetCnnSTR = strPath

End Function


蒂姆·威廉姆斯是对的。不要试图将其声明为公共变量,而是创建一个公共函数或属性。我的首选是在.bas模块中创建函数,在类中创建属性

Public Function GetCnnSTR() As String
    Dim loc As String
    Dim strPath as String

    loc = Environ$("APPDATA")
    strPath = ReadIniValue(loc & "\PensionMaster\PM-Strings.ini", "DB", "DBSQL")

    GetCnnSTR = strPath

End Function


常量必须在编译时已知;您不能使用(大多数)函数来定义它们(例如,
Environ$
)。此外,该行必须位于子行中,因为它是一个可执行行。@puropoix好的,感谢您的见解……但我如何才能将值传递给变量“loc”?如果您在运行之前知道“loc”的值是多少,那么只需将其添加到字符串中即可。但如果你想让它变为变量,我想你要找的不是一个常数。@Matteo NNZ loc必须是一个变量。因此,我应该如何声明它?创建一个函数或属性以返回CnnSTRconstants必须在编译时已知;您不能使用(大多数)函数来定义它们(例如,
Environ$
)。此外,该行必须位于子行中,因为它是一个可执行行。@puropoix好的,感谢您的见解……但我如何才能将值传递给变量“loc”?如果您在运行之前知道“loc”的值是多少,那么只需将其添加到字符串中即可。但如果你想让它变为变量,我想你要找的不是一个常数。@Matteo NNZ loc必须是一个变量。因此,我应该如何声明它?创建一个函数或属性以返回CnnSTR