2017-07-28 4 views
0

テーブルの内容をエクスポートするための基本マクロを設定しました。マクロはうまく動作しますが、保存するファイル名が既に存在するかどうかを確認するチェックを作成したい場合は、そのファイルを削除して、プロンプトボックスを使用しないようにしますファイルを上書きするのが好きです。アクセスマクロVBAに変換してから編集のみアクセス定義コードを実行

マクロをVBAに変換して、目的のdir(ファイル名)とkill(ファイル名)コードを追加できるようにしました。完了したら、VBAエディタでコードを正常に実行することができましたが、アクセスしたフォームの「オン・クローズ」イベントに基づいてコードを実行しようとしたときに、アクセスで表示されたコードのみが実行されますあたかもVBAエディタで追加のコード行を追加したことがないかのように、私が編集を完了したら、VBAからAccessに戻すために私がやろうとしていたことはありますか? (私は、フォームからExportLotを呼び出すときに、現在実行されますどのような)

Function ExportLot() 
On Error GoTo ExportLot_Err 
Dim filename As String 

    filename = "\\server1\Trial 
    Database for QS Reports\Lot Log Report.xlsx" 
    DeleteFile (filename) 
    DoCmd.OutputTo acOutputQuery, "LLUnion", "ExcelWorkbook(*.xlsx)", filename, False, "", , acExportQualityPrint 

    ExportLot_Exit: 
    Exit Function 

ExportLot_Err: 
    MsgBox Error$ 
    Resume ExportLot_Exit 

End Function 

Function FileExists(ByVal FileToTest As String) As Boolean 
    FileExists = (Dir(FileToTest) <> "") 
End Function 

Sub DeleteFile(ByVal FileToDelete As String) 
If FileExists(FileToDelete) Then 'See above 
    ' First remove readonly attribute, if set 
    SetAttr FileToDelete, vbNormal 
    ' Then delete the file 
    Kill FileToDelete 
End If 
End Sub 

オリジナル変換されたコード:

私が実行したいコードは以下を参照してください

Function ExportLot() 
On Error GoTo ExportLot_Err 
Dim filename As String 

    DoCmd.OutputTo acOutputQuery, "LLUnion", "ExcelWorkbook(*.xlsx)","\\server1\Trial Database for QS Reports\Lot Log Report.xlsx", False,"", , acExportQualityPrint 

    ExportLot_Exit: 
    Exit Function 

ExportLot_Err: 
    MsgBox Error$ 
    Resume ExportLot_Exit 

End Function 
+0

はあなたのcloseイベントには、新しいVBのコードにしていない元のマクロを参照することを確信していますか? –

+0

@DonGeorge VBAコードと元のアクセスマクロの両方に同じ名前が付けられています。 Accessで作成された元のマクロとVBAで編集されたコードがリンクされていると誤っていますか? – Ian

+0

推測を止めて、OnCloseイベントをマクロまたはVBAとして表示してください。次に、何が引き起こされているのかを知ることができます。 – Parfait

答えて

0

私は数字に管理この問題の解決策または回避策のいずれかを選択します。新しいマクロ(ExecuteCloseCode)を作成し、RunCodeイベントを使用して質問で定義されている関数(ExportLot())を呼び出しました。

次に、私はcloseイベントを使用して "ExecuteCloseCode"を呼び出しました。

この方法は、働いていたし、私の以前に提案された努力はしなかった理由を、私はわからない...

+0

これは私の以前のコメントの意味です。以前のアプローチでは古いマクロを実行していたようですが、この変更で新しいvbaスクリプトを実行しています。 –

+0

ありがとう@Don、私の問題は、私が古いマクロを実行していたかどうか、または私が新しいマクロを実行していたかどうかを判断する方法でした。 – Ian

関連する問題