问题:
我有一个.sav文件,其中包含调查问卷中的大量数据。使用VBA通过ODBC连接将此数据传输到访问数据库。许多不那么精通技术的同事正在使用VBA宏,每次他们需要使用新的.sav文件时,他们需要创建或更改连接。每次都可以解释一下这个问题,所以我希望能够以编程方式创建这个连接(理想情况下包含在VBA宏中,但如果不可能像python脚本那样)。
我想到的解决方案:
我对VBA不太熟悉,所以首先我尝试使用python。我找到了这个例子,对我而言似乎是一个解决方案:
http://code.activestate.com/recipes/414879-create-an-odbc-data-source/
但是,我不确定要为SQLConfigDataSource提供什么参数。我试过了:
create_sys_dsn(
'IBM SPSS Statistics 20 Data File Driver - Standalone',
SDSN='SAVDB',
HST='C:\ProgramFiles\IBM\SPSS\StatisticsDataFileDriver\20\Standalone\cfg\oadm.ini',
PRT='StatisticsSAVDriverStandalone',
CP_CONNECT_STRING='data/Dustin_w44-47_2011.sav',
CP_UserMissingIsNull=1)
但无济于事。
在这个领域变得绿色,我意识到我提出的解决方案可能甚至不是正确的解决方案。 stackoverflow有什么想法吗?
提前致谢
答案 0 :(得分:0)
一旦你有了文件名,就来自
这样的提示dim fd as Object
dim CSVFilename as String
Set fd = Application.FileDialog(3)
'Use a With...End With block to reference the FileDialog object.
With fd
.AllowMultiSelect = False
.Filters.Add "Data Files", "*.csv", 1
.ButtonName = "Forecast"
If .Show = -1 Then
CSVFilename = .SelectedItems(1)
' returns an array, even with multiselect off
Else
Exit Sub
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
然后你应该能够构造连接字符串,这将允许你打开文件
Dim MyConnect as new Connection
With MyConnect
.Provider="IBM SPSS Statistics 20 Data File Driver - Standalone"
.ConnectionString="data/" & CSVFilename
.Open
End With
我还要指出,如果您可以使用External Data -> Text File
(或等效的)导入 csv 文件,那么更像
DoCmd.TransferText(TransferType, SpecificationName, TableName, FileName, _
HasFieldNames, HTMLTableName, CodePage)
对你来说可能会更轻松
答案 1 :(得分:0)
对于任何碰巧需要解决方案的人来说,我最终做的是通过手动编辑注册表来创建系统DSN。
要查看需要修改哪些键和值,请手动创建系统DSN并检查“HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI [DSN]”和“HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI”中的值ODBC数据源'。应该相当清楚如何通过VBA创建DSN。