问题:
我有一个.sav文件,其中包含了大量来自问卷的数据。此数据通过使用VBA的ODBC连接传输到access数据库。许多不太懂技术的同事正在使用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)但没有结果。
在这个领域,我是绿色的,我意识到我提出的解决方案可能不是正确的。堆栈溢出有什么想法吗?
提前感谢
发布于 2013-01-31 13:05:06
对于任何碰巧需要解决这个问题的人,我最终所做的是通过手工编辑注册表来创建系统DSN。
要查看哪些键和值需要修改,请手动创建系统DSN,并检查'HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INIDSN‘和'HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC数据源中的值。应该相当清楚如何通过VBA创建DSN。
发布于 2012-12-06 17:16:48
拥有文件名后,从提示符(如
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)可能对你来说更容易
https://stackoverflow.com/questions/13745922
复制相似问题