在 VBA 中设置数据源目录
Set directory for data source in VBA
下面VBA中的代码用于连接Access数据文件:
Public Const sConnect As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = D:\data.accdb"
我正在尝试使用 ActiveWorkbook.Path
或 CurDir()
:
等函数为来自 MS Access 的数据源设置目录
Public data_source As String
data_source = ThisWorkbook.Path & Application.PathSeparator & "data.accdb"
然后:
Public Const sConnect As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = data_source "
但它不起作用,程序显示 "Invalid outside procedure"。似乎 ActiveWorkbook.Path
只能在 Sub 中工作?有什么办法可以正确地做到这一点?非常感谢。
常量必须是常量。这意味着您不能使用常量中具有 run-time 状态的任何内容。 public 可访问成员(在过程外部声明的变量)也是如此 - VBA 没有 "static constructor" 的概念,因此您无法设置模块级别的初始状态任何需要函数调用的变量(有少数例外)。
如果需要动态设置连接字符串,只需在运行时构建即可。将常量部分放在 Const
...
Public Const provider As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = "
...并在您建立连接之前附加数据源:
'Inside the procedure you create the connection from.
Dim source As String
source = ThisWorkbook.Path & Application.PathSeparator & "data.accdb"
Dim conString As String
conString = provider & source
'Use conString to create your connection.
下面VBA中的代码用于连接Access数据文件:
Public Const sConnect As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = D:\data.accdb"
我正在尝试使用 ActiveWorkbook.Path
或 CurDir()
:
Public data_source As String
data_source = ThisWorkbook.Path & Application.PathSeparator & "data.accdb"
然后:
Public Const sConnect As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = data_source "
但它不起作用,程序显示 "Invalid outside procedure"。似乎 ActiveWorkbook.Path
只能在 Sub 中工作?有什么办法可以正确地做到这一点?非常感谢。
常量必须是常量。这意味着您不能使用常量中具有 run-time 状态的任何内容。 public 可访问成员(在过程外部声明的变量)也是如此 - VBA 没有 "static constructor" 的概念,因此您无法设置模块级别的初始状态任何需要函数调用的变量(有少数例外)。
如果需要动态设置连接字符串,只需在运行时构建即可。将常量部分放在 Const
...
Public Const provider As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source = "
...并在您建立连接之前附加数据源:
'Inside the procedure you create the connection from.
Dim source As String
source = ThisWorkbook.Path & Application.PathSeparator & "data.accdb"
Dim conString As String
conString = provider & source
'Use conString to create your connection.