Hallo, ich habe folgendes Problem (Excel /Access 97):
Es besteht eine Access-Datenbank mit mehreren Tabellen aus denen jeweils mehrere XSDs erzeugt werden sollen. Um das zu schaffen, hat man bisher die Tabellen händisch in eine Excel-Datei kopiert. Dort wurden dann bestimmt VBA-Makros ausgeführt, um daraus mehrere XSDs zu generieren.
Die manuelle und umständliche Excel-Komponente soll nun aber möglichst eliminiert werden, so dass die XSDs direkt aus Access erzeugt werden können. Ein einfaches Exportieren funktioniert nicht, da aus EINER Tabelle MEHRERE XSDs erzeugt werden müssen, was eben über die erwähnten Makros erfolgt.
Hier mal ein Code-Auszug:
Nun zu meiner Frage: Weiß jemand wie man den Code in Access zum laufen bekommt bzw. ob das überhaupt geht? Wie gesagt Excel sollte dabei möglichst nicht mehr verwendet werden, sondern direkt alles aus Access heraus.
Es besteht eine Access-Datenbank mit mehreren Tabellen aus denen jeweils mehrere XSDs erzeugt werden sollen. Um das zu schaffen, hat man bisher die Tabellen händisch in eine Excel-Datei kopiert. Dort wurden dann bestimmt VBA-Makros ausgeführt, um daraus mehrere XSDs zu generieren.
Die manuelle und umständliche Excel-Komponente soll nun aber möglichst eliminiert werden, so dass die XSDs direkt aus Access erzeugt werden können. Ein einfaches Exportieren funktioniert nicht, da aus EINER Tabelle MEHRERE XSDs erzeugt werden müssen, was eben über die erwähnten Makros erfolgt.
Hier mal ein Code-Auszug:
Visual Basic-Quellcode
- '------------------------
- '--Variablendeklaration--
- '------------------------
- Dim dateiname As String 'speichert Namen des Arbeitsblattes
- Dim verzeichnis As String 'speichert Verzeichnisangabe
- Dim ordner As String 'speichert Ordnerangabe innerhalb des Verzeichnisses
- Dim cf As Object
- Dim i As Integer 'innere Schleife
- Dim e As Integer 'äußere Schleife
- Dim anfang As Integer 'speichert Spaltennummer des ersten Service
- Dim ende As Integer 'speichert Spaltennummer des letzten Service
- Dim count As Integer 'speichert Anzahl der Arbeitsblätter
- Dim prgmAbbruch As Boolean
- Dim last_service As Boolean
- prgmAbbruch = False
- '---------------------
- '--Verzeichnisangabe--
- '---------------------
- verzeichnis = "U:\XSD-Dateien\"
- ordner = "U:\XSD-Dateien\DB2-Ladebestand\"
- Set cf = CreateObject("Scripting.FileSystemObject")
- If (cf.FolderExists(verzeichnis) = False) Then
- cf.CreateFolder (verzeichnis)
- End If
- If (cf.FolderExists(ordner) = False) Then
- cf.CreateFolder (ordner)
- End If
- '------------------------
- '--Programm-Anweisungen--
- '------------------------
- count = ActiveWorkbook.Worksheets.count 'Alle Arbeitsblätter des Workbooks zählen
- 'Alle Arbeitsblätter durchlaufen vom ersten bis zum vorher festgelegten letzten
- For e = 1 To count
- i = 1
- last_service = False
- 'Der Name des aktuellen Arbeitsblattes wird in Variable "Name" gespeichert
- Worksheets(e).Activate
- dateiname = ActiveSheet.name
- 'Ausgabeordner für die einzelnen Arbeitsblätter werden erstellt, wenn sie noch nicht existieren
- If (cf.FolderExists(ordner + dateiname) = False) Then
- cf.CreateFolder (ordner + dateiname)
- End If
- 'Schleife wird solange durchlaufen bis Booleanvariable "count" auf true gesetzt wird (letzter Service erreicht)
- Do
- If (Cells(2, i) = "BOS") Then
- anfang = i 'Spaltennummer des ersten Service wird in Variable "anfang" gespeichert
- ElseIf (Cells(2, i) = "BOS/EOS") Then
- anfang = i
- ende = i
- last_service = True
- ElseIf (Cells(2, i) = "EOS") Then
- ende = i 'Spaltennummer des letzten Service wird in Variable "ende" gespeichert
- last_service = True
- End If
- i = i + 1
- Loop While (last_service = False)
- 'Von "anfang" bis "ende" wird die aktuelle Spaltennummer und der Name des aktuellen Ordners an das Unterprogramm "Auslesen" übergeben
- For i = anfang To ende
- Call Auslesen(i, dateiname, ordner, anfang, prgmAbbruch)
- If prgmAbbruch = True Then
- Exit For
- End If
- Next i
- If prgmAbbruch = True Then
- Exit For
- End If
- Next e
- End Sub
Nun zu meiner Frage: Weiß jemand wie man den Code in Access zum laufen bekommt bzw. ob das überhaupt geht? Wie gesagt Excel sollte dabei möglichst nicht mehr verwendet werden, sondern direkt alles aus Access heraus.