» Poradna » Programy

VBA - MS Access - export názvů objektů

 | Microsoft Windows 7 Firefox 19.0

Zdravím, obracím se na Vás s následující prosbou. Mám databázi v MS Access 2007, která obsahuje asi 30 tabulek, 80 dotazů, 30 sestav a stejné množství formulářů. Pak tam mám pár maker a modulů. Ráda bych názvy všech objektů v databázi (tabulek, dotazů, formulářů, sestav, maker i modulů) "exportovala" do textového souboru např. MS Word. Na internetu jsem si našla kód, který zobrazí názvy objeků, ale umí je ukázat jako message box v MS Access, což je mi k ničemu. Neznáte, někdo, prosím, způsob, jak exportovat názvy objedků databáze do textového souboru, případně umíte někdo upravit kód tak, aby místo do Msg box exportoval názvy objektů? Díky mocKód (myslím, že stačí upravit pouze case7, ostatní exportují vždy jen jeden typ objektů):Private Sub ChooseObject_AfterUpdate() Dim DB As Database, I As Integer, j As Integer, ok_cancel As Integer Dim System_Prefix, Current_TableName, Hidden_Prefix Dim Ok As Integer, Cancel As Integer Ok = 1 Cancel = 2 Set DB = DBEngine(0)(0) Select Case Me![ChooseObject] Case 1 'System tables are excluded from the list. For I = 0 To DB.TableDefs.Count - 1 Current_TableName = DB.TableDefs(I).Name System_Prefix = Left(Current_TableName, 4) Hidden_Prefix = Left(Current_TableName, 1) If System_Prefix <> "MSys" And System_Prefix <> "USys" And Hidden_Prefix <> "~" Then ok_cancel = MsgBox(DB.TableDefs(I).Name, 65, "TABLE NAMES") If ok_cancel = Cancel Then Exit Sub End If End If Next I Case 2 For I = 0 To DB.QueryDefs.Count Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows Vista Opera 9.80

Ten Case 7 se dá upravit třeba takto (je to nová procedura a vytvoří soubor ObjectNames.txt ve stejném adresáři jako je databáze):Sub ObjectNames()Dim db As Database, i As Integer, j As IntegerDim fnum Set db = DBEngine(0)(0) fnum = FreeFile Open CurrentProject.Path & "\ObjectNames.txt" For Output As #fnum For i = 0 To db.Containers.Count - 1 For j = 0 To db.Containers(i).Documents.Count - 1 Print #fnum, db.Containers(i).Name & vbTab & db.Containers(i).Documents(j).Name Next j Next i Close #fnumEnd SubCo jsem ale koukal, tak nerozlišuje mezi tabulkou a dotazem. Můžeš tedy vyzkoušet i tohle:Sub ObjectNames() Dim db As Database Dim td As TableDef Dim doc As Document Dim i As Integer Dim fnum Set db = CurrentDb() fnum = FreeFile Open CurrentProject.Path & "\ObjectNames.txt" For Output As #fnum For Each td In db.TableDefs If Left(td.Name, 4) <> "MSys" Then Print #fnum, "Tables" & vbTab & td.Name End If Next td For i = 0 To db.QueryDefs.Count - 1 Print #fnum, "Queries" & vbTab & db.QueryDefs(i).Name Next i For Each doc In db.Containers("Forms").Documents Print #fnum, "Forms" & vbTab & doc.Name Next doc For Each doc In db.Containers("Reports").Documents Print #fnum, "Reports" & vbTab & doc.Name Next doc Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: 10, Vba ms, MS Access, Cancel, COUNT, Then, Next, Exit, Stejné množství, Macro