2017-05-07 1 views
2

먼저 VBA로 코딩하는 데 익숙하지 않다는 것을 인정해야합니다. MS Access 매크로 및 쿼리를 사용하여 응용 프로그램을 빌드합니다. 임시 가져 오기 파일을 사용하고, 매크로가 존재하는지 테스트하기 위해 매크로 또는 일부 VBA를 실행할 필요가 있습니다.ACCESS VBA 코드가 존재하는 경우 테이블을 삭제합니다.

내 테이블 이름은 내가 구글 검색을 통해이 연구 한 작업 수있는 몇 가지 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 ... something something ... Else .... else else'. –

답변

3

먼저 테이블이 존재하는지 여부를 확인해야하고 당신이 존재하는 경우, 그것을 닫으려고한다 :

는 여기에 내가 일을하기 위해 노력하고있어 코드입니다. 그런 다음 경고를 False로 설정해야 테이블을 삭제할 것인지 확실하지 않은지 묻지 않습니다.

아래 예에서는 Table3을 삭제합니다.

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 

는 꽤 많은 코드가 작동합니다 다음 If Not IsNull는 테이블이 존재 여부를 확인한다.

0

TempImport1 테이블을 삭제하려면 다음 기능을 사용하십시오.

함수가 생성되면
Function DeleteTables() 

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

End Function 

, 매크로를 만들 작업의 실행 코드는 다음 함수 이름에 DeleteTables()을 입력 추가합니다.
그런 다음 테이블을 삭제하려면 실행 매크로가 있어야합니다.

관련 문제