2013-02-05 4 views
7

は現在、私のコードはこれですファイルパスとファイル名を定義できますか?VBA DoCmd.TransferTextは、ユーザー定義のファイル・パスを.csvにクエリをエクスポート

ありがとうございました。

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

他のアプローチは、そこにありますが、これはおそらく、実装するのが最も簡単です:

答えて

11

は、ユーザーが入力を求めるプロンプトが表示されるようにしたいと仮定して、あなたに、TransferText呼び出しでその入力を使用し、これを試してください。

幸運。

+0

ありがとう、これは私が持っていたものより優れていますが、私はユーザーが通常このような操作を実行するために使用するWindowsエクスプローラボックスの後です。 – user1844098

+4

ああ、あなたはFileDialogを使いたいと思っています - ここを見てください:http://support.microsoft.com/kb/824272 – sgeddes

+0

どうもありがとうございます! – user1844098

5

この例では、保存-としてのFileDialogオブジェクトを使用できるようになります:

を、この機能を使用するには、「Microsoft OfficeのXX.0オブジェクトライブラリ」への参照を追加する必要があります。新しいモジュールを追加し、次の関数を貼り付けます。エクスポート、使用を開始したい、あなたのコード内で今

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 

: コールexportQueryを

私はお勧めします(「* SELECT ... FROM」) SQLクエリの文字列変数を定義します。

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

    Call exportQuery(queryStr) 

    End Sub