Próbuję zmienić nazwę tabeli dostępu przy użyciu języka VBA z programu Excel ... jakiejkolwiek pomocy?Jak zmienić nazwę tabeli dostępu przy użyciu języka VBA z programu Excel?
Odpowiedz
Jak o:
Dim appAccess As Object
''acTable=0
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "C:\Docs\LTD.mdb"
appAccess.DoCmd.Rename "NewTableName", 0, "OldTableName"
appAccess.Quit
Set appAccess = Nothing
Byłoby miło, gdyby twój kod został oczyszczony po sobie, nie sądzisz? –
@ David W Fenton Miałem wrażenie, że jest to forum, na którym pomysły powinny wystarczyć, i że wystarczą nawet odpowiedzi jednolinijne. – Fionnuala
@ David W Fenton, jeśli naprawdę sądzisz, że to jest takie ważne, edytuj odpowiedź i napraw to sam –
Oto przykład jednego z moich programów (który nadal jest w codziennym użyciu w firmie). Jest pobierany z programu vb6, ale także jest wykonywany w vba. Przetestowałem to, aby się upewnić.
W tym przykładzie mamy tabelę tymczasową o nazwie "mytable_tmp", która jest aktualizowana o nowe dane i chcielibyśmy ją zapisać w tabeli "mytable", zastępując ją.
Od edytora Excel VBA trzeba ustawić odwołanie do dwóch następujących bibliotekach Typ:
- "Microsoft ActiveX Data Objects 2.8 Library"
- „Microsoft ADO Ext 2,8 do DDL i. Zabezpieczenia "
Pierwsza dotyczy przestrzeni nazw ADODB, a druga przestrzeni nazw ADOX. (Może masz wcześniejszą wersję MDAC podobną do wersji 2.5 lub wcześniejszej, to też powinno działać).
Private Sub RenameTable()
Dim cn As New ADODB.Connection
Dim cat As ADOX.Catalog
Const sDBFile As String = "c:\et\dbtest.mdb"
On Error GoTo ErrH
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeShareDenyNone
.Properties("User ID") = "admin"
.Properties("Password") = ""
.Open sDBFile
End With
Set cat = New ADOX.Catalog
cat.ActiveConnection = cn
cat.Tables("mytable").Name = "mytable_old"
cat.Tables("mytable_tmp").Name = "mytable"
cat.Tables("mytable_old").Name = "mytable_tmp"
ExitHere:
If Not cn Is Nothing Then
If Not cn.State = adStateClosed Then cn.Close
Set cn = Nothing
End If
Set cat = Nothing
Exit Sub
ErrH:
Dim sMsg As String
sMsg = "Massive problem over here man."
sMsg = sMsg & vbCrLf & "Description : " & cn.Errors.Item(0).Description
MsgBox sMsg, vbExclamation
GoTo ExitHere
End Sub
Mając nadzieję być pomocnym.
Wydaje mi się, że jedyną wartością tego długowiecznego kodu w trzech liniach kodu Remou jest, gdy nie masz zainstalowanego programu Access . –
Daje także możliwość wykonywania więcej niż zwykłej kopii w tym samym kodzie - a kto wie, użytkownik Excela może nie mieć dostępu do Access. Wciąż jednak muszę przyznać, że wygląd Remou jest bardziej użyteczny. – mavnn
;) Jak śmiesz uwzględniać obsługę błędów i komunikaty użytkownika. I o co chodzi w tym formatowaniu! (Dużo śmieszniej, jeśli robisz to w głosie Stewiego). +1 – JeffO
Oto drobna alternatywa dla powyższego kodu Remou. Używam funkcji powłoki, aby otworzyć bazę danych, której potrzebuję, a następnie funkcję GetObject, aby uzyskać dostęp do jej właściwości i metod. Zalety robienia tego w ten sposób są następujące: 1) Można wybrać sposób otwierania okna aplikacji Access. Dla moich celów chcę, żeby to było ukryte. 2) Mam zainstalowany zarówno program Access 2003, jak i 2007, a metoda Remou powoduje otwarcie 2003, czego nie chcę. Moja metoda (jak sądzę) otwiera plik w dowolnej wersji, z której korzystałby system Access, gdyby użytkownik dwukrotnie go kliknął.
Wadą jest to, że należy upewnić się, że baza danych jest otwarta przed próbą manipulowania nią. Używam prostego podprogramu oczekiwania, aby sobie z tym poradzić, ale są bardziej wyrafinowane rzeczy, które możesz zrobić.
Sub Rename()
Dim ObjAccess As Object, MDB_Address As String, TaskID As Integer
MDB_Address = "C:\example.mdb"
TaskID = Shell("msaccess.exe " & Chr(34) & MDB_Address & Chr(34), vbHide)
Call Wait
Set ObjAccess = GetObject(MDB_Address)
ObjAccess.DoCmd.Rename "NewTableName", 0, "OldTableName"
ObjAccess.Quit
Set ObjAccess = Nothing
End Sub
Sub Wait()
Dim nHour As Date, nMinute As Date, nSecond As Date, waitTime As Date
nHour = Hour(Now())
nMinute = Minute(Now())
nSecond = Second(Now()) + 5
waitTime = TimeSerial(nHour, nMinute, nSecond)
Application.Wait waitTime
End Sub
- 1. Filtrowanie tabeli przestawnej programu Excel przy użyciu VBA
- 2. Otwieranie dostępu z programu Excel VBA
- 3. Jak usunąć wiersze w obiekcie ListView programu Excel na podstawie kryteriów przy użyciu języka VBA?
- 4. Przycinanie komórek przy użyciu języka VBA w programie Excel
- 5. Utwórz tabelę SQL z programu Excel VBA
- 6. Liczba rekordów w tabeli dostępu przy użyciu VBA
- 7. Zmień nazwę arkusza programu Excel na makro VBA
- 8. Ukrywanie arkusza programu Excel z VBA
- 9. Jak zmienić nazwę pliku przy użyciu NSFileManager
- 10. Filtr VBA programu Excel Zmienić moduł obsługi zdarzeń
- 11. Wielkość tabeli przy użyciu języka zapytań JPA
- 12. Uzyskiwanie dostępu do typów aplikacji VSTO z VBA (Excel)
- 13. Nagłówki dla arkusza programu Excel przy użyciu EPPlus
- 14. Excel: Jak sprawdzić, czy komórka jest pusta przy użyciu VBA?
- 15. Jak zmodyfikować istniejący skoroszyt programu Excel za pomocą języka Perl?
- 16. Python: czytanie dużych arkuszy programu Excel przy użyciu Openpyxl
- 17. Usuwanie zdjęć za pomocą programu Excel VBA
- 18. Dokumentacja dla programu Excel Makra VBA
- 19. Alternatywa dla edytora VBA programu Excel?
- 20. Techniki debugowania programu Excel VBA "Brak pamięci"
- 21. Jak zmienić nazwę pojedynczej kolumny w tabeli przy wyborze?
- 22. Odczytywanie danych z programu Excel 2010 przy użyciu Microsoft.Office.Interop.Excel
- 23. Sortowanie Arkusz danych według wartości kolumn przy użyciu Excel VBA
- 24. Jak uzyskać identyfikator procesu bieżącej instancji programu Excel, za pomocą języka VBA, bez używania podpisu?
- 25. Jak pobrać plik przy użyciu VBA (bez przeglądarki internetowej)
- 26. Excel VBA - Usuń puste wiersze w tabeli
- 27. Formatowanie podzbioru tekstu w komórce programu Excel przy użyciu formuły
- 28. przenoszenie danych z programu Excel do programu SQL Server tabeli
- 29. Uzyskaj nazwę arkusza programu Excel zawierającego kod
- 30. Excel Upaść podczas odprawy niezmodyfikowanej skoroszytu programu Excel do programu SharePoint z VBA
Dlaczego chcesz? Chyba że jest to tymczasowa tabela danych. –