2017-05-07 53 views
2

まず、VBAによるコーディングで訓練されていないことを認めなければなりません。私は私のアプリケーションを構築するためにMS Accessのマクロとクエリを使用します。私はいくつかの一時的なインポートファイルを使用して、それらが存在するかどうかをテストするためにマクロまたはいくつかのVBAを実行する必要があります。ACCESS VBAコードが存在する場合にテーブルを削除するには

私のテーブル名は、私はGoogle検索を経由して、これを研究してきたし、うまくいくかもしれないいくつかのVBAに遭遇してきた

「TempImport1」ですが、私はモジュールにコードを配置する方法を理解しようとしたり紛失していますクリックサブボタン。私は過去にボタン機能の下でVBAコードをカット/ペーストしていましたが、それは機能しましたが、なぜ今回は機能していないのかわかりません。

正直言って、プライベートとパブリックの機能の理解が不足していることはもちろんですが、もちろんVBAを知らないということもあります。ここで

は私が仕事をしようとしているコードです:

Function IsTable(sTblName As String) As Boolean 
    'does table exists and work ? 
    'note: finding the name in the TableDefs collection is not enough, 
    '  since the backend might be invalid or missing 

    On Error GoTo TrapError 
    Dim x 
    x = DCount("*", sTblName) 
    IsTable = True 
    Exit Function 
TrapError: 
    Debug.Print Now, sTblName, Err.Number, Err.Description 
    IsTable = False 

End Function 
+0

この関数は、テーブルが存在するかどうかをチェックするだけです。これを 'myTest = IsTable(" table_name ")'と呼びます。この関数は、このテーブルのレコード数を数えようとします。テーブルが存在する場合、関数はカウントを行うことができるので、 'IsTable = True'を返します。そうでなければ、上記のエラー処理はエラーを捕捉し、 'IsTable = False'をセットします。ですから、コードをテストするだけです。 'isTable(" yourTable ")Then ... ...何かをしてください。そうでなければ....他の何かを実行してください。 –

答えて

3

まず、表が存在するかどうかを確認する必要があり、その後、あなたはそれが存在する場合、それを閉じてみてください。次に、警告をFalseに設定して、テーブルを削除するかどうかを確認する必要はありません。

以下の例では、Table3を削除します。 If Not IsNullは、表が存在するかどうかをチェックしている:

Option Compare Database 
Option Explicit 

Public Sub DeleteIfExists() 

    Dim strTableName As String 

    strTableName = "Table3" 

    If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & strTableName & "'")) Then 

     DoCmd.SetWarnings False 
     DoCmd.Close acTable, strTableName, acSaveYes 
     DoCmd.DeleteObject acTable = acDefault, strTableName 
     Debug.Print "Table" & strTableName & "deleted..." 
     DoCmd.SetWarnings True 

    End If 

End Sub 

かなり多くのコードが動作するはずです。

0

TempImport1テーブルを削除するには、次の機能を使用してください。

Function DeleteTables() 

    If Not IsNull(DLookup("Name", "MSysObjects", "Name='TempImport1'")) Then 
    DoCmd.DeleteObject acTable, "TempImport1" 
    End If 

End Function 

機能が作成されたら、マクロを作成し、関数名にしてDeleteTables()に入力し、アクションの実行コードを追加します。
テーブルが存在する場合は、テーブルを削除するマクロがあります。

関連する問題