shitzovran
Goto Top

Tabellen automatisiert umbenennen anhand einer Tabelle

Ich habe eine Access 2003 Datenbank mit knapp 250 Tabellen. Diese möchte ich jetzt mittels VBA automatisiert umbenennen.

Die alten und die neuen Tabellennamen sitehen wiederum in einer Tabelle.

zB

ForeignName	                      | Name
----------------------------------------------------------------------------
_email_posteingangaktion	      | MailAktionEingang
9300 servo-positionierregler	      | 9300 Servo-Positionierregler
ablageordner	                      | AblageOrdner
adressenbesuche	                      | AdressenBesuche
aktionen	                      | Aktionen
kdb                                   | KDB Basis


es ist immer unterschiedlich.. manchmal soll einfach nur die Groß/Kleinschreibung geändert werden.. manchmal erhält die Tabelle einen ganz anderen Namen. Deshalb die "Referenztabelle" mit sozusagen "ValueOld" und "ValueNew"

Wie schaffe ich es jetzt mittels VBA dass alle tabellen in der DB umbenannt werden?
ich habe schon versucht irgendetwas ähnliches zu googeln und anzupassen.. das ging aber kläglich in die Hose face-smile

Content-Key: 148635

Url: https://administrator.de/contentid/148635

Printed on: April 23, 2024 at 10:04 o'clock

Mitglied: 76109
76109 Aug 09, 2010 at 15:18:45 (UTC)
Goto Top
Hallo ShitzOvran !

Sofern beim Umbenennen keine Bezüge in Abfragen, Formulare... verloren gehen, sollte dieser Code das gewünsche Ergebnis bringen:
Sub Test()
    Dim rs As Object, Table As Object, NewName As String, OldName As String
    
    Set rs = CurrentDb.OpenRecordset("Select * From [Referenztabelle]")  
    
    On Error Resume Next
    
    Do Until rs.EOF
        OldName = rs("ForeignName")  
        NewName = rs("Name")  
        
        Set Table = CurrentData.AllTables(OldName)
        
        If Err.Number = False Then
            DoCmd.Rename NewName, acTable, OldName
        Else
            Err.Clear
           'MsgBox "Tabelle existiert nicht: " & OldName, vbExclamation, "Fehler"  
        End If
        rs.MoveNext
    Loop
End Sub

Gruß Dieter