12

現在、私のコードは次のとおりです。

Dim testSQL As String
Dim qd As DAO.QueryDef

testSQL = "SELECT * FROM qryExample WHERE exampleID IN (" & strExampleIDList & ")"
Set qd = db.CreateQueryDef("tmpExport", testSQL)
DoCmd.TransferText acExportDelim, , "tmpExport", "C:\export.csv"
db.QueryDefs.Delete "tmpExport"

ユーザーがファイル パスとファイル名を定義できるように、「C:\export.csv」の部分を変更するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

15

ユーザーに入力を求めるプロンプトを表示し、その入力を TransferText 呼び出しで使用する場合は、次のようにします。

Dim UserInput As String
UserInput  = InputBox("Please enter the file path.", "I WANT A VALUE!") 
DoCmd.TransferText acExportDelim, , "tmpExport", UserInput  

他にも方法はありますが、おそらくこれが最も簡単に実装できます。

幸運を。

于 2013-02-05T04:28:59.273 に答える
8

この例では、filedialog Save-As オブジェクトを使用できます。

この関数を使用するには、「Microsoft Office XX.0 Object Library」への参照を追加する必要があります。新しいモジュールを追加し、次の関数を貼り付けます。

    Public Sub exportQuery(exportSQL As String)
    Dim db As DAO.Database, qd As DAO.QueryDef
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)

    Set db = CurrentDb

    'Check to see if querydef exists
    For i = 0 To (db.QueryDefs.Count - 1)
        If db.QueryDefs(i).Name = "tmpExport" Then
            db.QueryDefs.Delete ("tmpExport")
            Exit For
    End If
    Next i

    Set qd = db.CreateQueryDef("tmpExport", exportSQL)

    'Set intial filename
    fd.InitialFileName = "export_" & Format(Date, "mmddyyy") & ".csv"

    If fd.show = True Then
        If Format(fd.SelectedItems(1)) <> vbNullString Then
            DoCmd.TransferText acExportDelim, , "tmpExport", fd.SelectedItems(1), False
        End If
    End If

    'Cleanup
    db.QueryDefs.Delete "tmpExport"
    db.Close
    Set db = Nothing
    Set qd = Nothing
    Set fd = Nothing

    End Sub

エクスポートを開始するコード内で、次を使用します。 Call exportQuery("SELECT * FROM...")

SQL クエリに文字列変数を定義することをお勧めします。

    Public Sub someButton_Click()
    Dim queryStr as String
    'Store Query Here:
    queryStr = "SELECT * FROM..."

    Call exportQuery(queryStr)

    End Sub
于 2014-08-27T14:33:06.757 に答える