Hallo,
erstmal möchte ich das Thema etwas relativieren, da es auch auf ein anderes, als mein nun folgendes, Problem schließen lässt. Zudem hoffe ich, daß es nicht ganz Off-Topic ist:
Ich habe bei meinen Hoster eine HP, die leider keine Datenbank-Anbindung enthält. Ich kann also nicht dynamisch auf dem Server aus einer Datenbank eine HTML-Datei erzeugen.
Ich habe nun eine ziemlich große FAQ-Sammlung, die ich in einer Access2000 Datenbank integriert habe. Nun ist es ja mit Access möglich, mittels Makros neue (HTML-)Dateien zu erstellen, die dann meine Daten aus der Datenbank enthalten.
Leider habe ich davon zu wenig Ahnung, um dies selber zu machen.
Ich habe allerdings so ein Makro schon für Excel, daß Datensätze aus einer Excel-Tabelle entnimmt und damit HTML-Dateien erzeugt.
Das Makro poste ich mal:
Option Explicit ' Variablen müssen vor Benutzung deklariert werden
Option Private Module ' Makro nicht unter "Extras - Makros" anzeigen lassen
' Die Startseiten schreiben
Sub RM_StartseiteSchreiben()
Dim iRow As Integer, iCnt As Integer
iCnt = 0 ' Startnummer für HTML-Seite
iRow = 3 ' Startzeile (1. Datensatz) in "Tabelle1"
' Solange Seiten erstellen, bis keine Daten (Leere Zeile) in Spalte gefunden
While Worksheets("Tabelle1").Range("A" & iRow).Value <> ""
' Datei erstellen (im gleichen Ordner wie diese Mappe)
iCnt = iCnt + 1
Open ActiveWorkbook.Path & "" & iCnt & ".htm" For Output As #1
' Seite schreiben
' Kopf
Print #1, "<html>"
Print #1, "<head>"
Print #1, " <meta http-equiv=""content-type"" content=""text/html;charset=iso-8859-1"">"
Print #1, " <meta name=""language"" content=""deutsch, de"">"
Print #1, " <meta name=""description"" content=""" & RM_String2Html(Worksheets("Tabelle1").Range("C" & iRow).Value) & """>"
Print #1, " <meta name=""keywords"" content=""" & RM_String2Html(Worksheets("Tabelle1").Range("D" & iRow).Value) & """>"
Print #1, " <meta name=""robots"" content=""index"">"
Print #1, ""
Print #1, " <title>" & RM_String2Html(Worksheets("Tabelle1").Range("A" & iRow).Value) & "</title>"
Print #1, "</head>"
Print #1, ""
' Body
Print #1, "<body text=""#000000"" bgcolor=""#ffffff"">"
Print #1, ""
Print #1, "<h2>" & RM_String2Html(Worksheets("Tabelle1").Range("A" & iRow).Value) & "</h2>"
Print #1, ""
Print #1, RM_String2Html(Worksheets("Tabelle1").Range("B" & iRow).Value)
Print #1, ""
Print #1, "<br><br>"
Print #1, "<a href=""" & RM_String2Html(Worksheets("Tabelle1").Range("E" & iRow).Value) & """> Link " & iCnt & "</a>"
Print #1, ""
Print #1, "<br><br>"
Print #1, "<font face=""arial,helvetica,sans-serif"" size=""1"" color=""#d0d0d0"">Stand: " & Format(Date, "dd.mm.yyyy") & "</font>"
Print #1, ""
Print #1, "</body>"
Print #1, "</html>"
' Datei schliessen
Close #1
' Hilfsvariable um eins erhoehen
iRow = iRow + 1
Wend
End Sub
' String HTML-konform machen
Function RM_String2Html(ByVal sName As String) As String
Dim iLength As Integer, i As Integer
Dim sTmp As String
sTmp = ""
iLength = Len(sName)
' Zeichen fuer Zeichen umwandeln und schreiben
For i = 1 To iLength
Select Case Mid(sName, i, 1)
Case "Ä"
sTmp = sTmp & "Ä"
Case "ä"
sTmp = sTmp & "ä"
Case "Ö"
sTmp = sTmp & "Ö"
Case "ö"
sTmp = sTmp & "ö"
Case "Ü"
sTmp = sTmp & "Ü"
Case "ü"
sTmp = sTmp & "ü"
Case "ß"
sTmp = sTmp & "ß"
Case "&"
sTmp = sTmp & "&"
Case "é"
sTmp = sTmp & "é"
Case "ñ"
sTmp = sTmp & "ñ"
Case "ë"
sTmp = sTmp & "ë"
Case """"
sTmp = sTmp & ""e;"
Case Else
sTmp = sTmp & Mid(sName, i, 1)
End Select
Next i
RM_String2Html = sTmp
End Function
An sich genau das, was ich suche. Nur Excel hat den Nachteil, daß es nun mal kein Datenbank-Programm sondern eine Tabellenkallkulation ist, ich deshalb zu einfachen Dateneingabe keine Formulare nutzen kann, oder Berichte erstellen kann.
Nun meine eigentliche Frage: Ist es möglich, das Makro so anzupassen, daß es unter Acces funktioniert?
Viele Grüße
Alexander
P.S.: Unter http://www.bike-pages.de/tmp/excel.xls steht zur Demo eine solche Excel-Tabelle.