1

問題:

アンケートからの多くのデータを含む.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)

しかし、役に立たない。

この分野で環境に配慮しているので、私が提案した解決策は正しいものではないかもしれないことに気づきました。stackoverflowにアイデアはありますか?

前もって感謝します

4

2 に答える 2

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

また、 (または同等の)を使用してcsvファイルをインポートできる場合は、次のようなコマンドを使用することも指摘しますExternal Data -> Text File

DoCmd.TransferText(TransferType, SpecificationName, TableName, FileName, _
    HasFieldNames, HTMLTableName, CodePage)

おそらくあなたにとってはより簡単にうまくいくでしょう

于 2012-12-06T17:16:48.983 に答える