Anzeige
Archiv - Navigation
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
432to436
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Excel-Tabelle in HTML
24.05.2004 14:18:50
Petra
Hallo Forum
Folgendes Problem:
Ich muss für meine Bude ein Makro schreiben, das einen Zellbereich in ein HTML-File umwandelt. Das sieht in etwa so aus:
ActiveWorkbook.PublishObjects.Add (xlSourceRange, "C:\DeliverablesList.htm", _
"Tabelle1", "A1:J11", xlHtmlStatic, "", "").Publish (True)

Das funktioniert auch einwandfrei, jedoch wird im HTML-File der markierte Bereich per DIV-Tag zentriert:
[div id="DeliverablesList" align=center x:publishsource="Excel"]
Es ist (für mich) keine Sache, von Hand den DIV-Tag zu ändern, damit es nicht mehr zentriert ist. Das ist jedoch nicht der Sinn der Sache. Nachdem das Makro beendet wurde, sollte man nichts mehr machen müssen. (Ausserdem wird es für einige Mitarbeiter wohl zu kompliziert sein, von Hand das HTML-File zu bearbeiten.)
Nun meine Frage: Kann ich per Excel-Makro das eben erstellte HTML-File bearbeiten oder kann man die Zentrier-Funktion irgendwie ausschalten?
Vielen Dank im Voraus
Gruss Petra

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Tabelle in HTML
Oberschlumpf
Hallo Petra
....nur ein Gedanke...
Und wenn Du nach Durchführung des eigentlichen Makros, per VB-Cpde die htm-Datei noch mal einliest, und die entsprechende Zeile änderst?
Z Bsp so:

Sub TagAendern()
Dim lstrZeile As String
Open "pfad\Datei.htm" For Input As #1
Open "pfad\dummy.htm" For Output As #2
Do While Not Eof(1)
Line Input #1, lstrZeile
If lstrZeile = "hier der eindeutige Text der Zeile mit dem Div-Tag" Then
Print #2, "hier DIE Zeile mit geändertem DIV-Tag"
Else
Print #2, lstrZeile
End If
Loop
Close 1,2
Kill "pfad\Datei.htm"
Name "pfad\dummy.htm" As "pfad\Datei.htm"
End Sub

Mit diesem Bsp wird jede Zeile der Original-HTM-Datei zuerst
eingelesen
dann wird der Inhalt geprüft
und wenn die gesuchte Zeile gefunden ist, wird diese Zeile, wie gewünscht geändert und in die Dummy-Datei geschrieben
wenn der Inhalt nicht mit dem übereinstimmt, was gesucht wird, dann wird die Zeile unverändert in die Dummy-Datei geschrieben
Am Schluss wird die Original-Datei gelöscht und die Dummy-Datei in den Namen der Original-Datei umbenannt.
Voraussetzung ist, dass die gesuchte Zeile immer den gleichen Inhalt hat und dass diese Zeile auch nur einmal vorkommt. (bei mehreren Treffern wird auch da die zentrierte Ausgabe geändert, wsa ja nicht immer erwünscht sein muss)
Konnte ich Dir mit dieser Überlegung weiterhelfen?
Ciao
Thorsten
Anzeige
AW: Excel-Tabelle in HTML
24.05.2004 15:36:28
Petra
Hallo Thorsten
Danke, die Idee ist gut und es ist auch in einer angemessenen Zeit zu machen, jedoch habe ich noch zwei Probleme:
1. [div id="DeliverablesList_32603" align=center x:publishsource="Excel"]
Die fettgedruckte Zahl ändert sich anscheinend bei jedem HTML-File (es werden immer gleich mehrere Files erstellt). Der Anfang wäre aber immer gleich. Kann man anstatt:
If lstrZeile = "[div id="DeliverablesList_32603" align=center x:publishsource="Excel"]" Then
nicht etwas wie:
If InStr(1, lstrZeile, "[div id="DeliverablesList_")=1 then
angeben? (Diese Zeichenfolge ist sonst nirgens im HTML-File verzeichnet.)
2. Es gibt ja Probleme wenn ich lstrZeile = "[div id="Deliverableslist_320603" ... schreibe. Was muss ich schon wieder machen, um diesen Fehler zu beheben?
Gruss Petra
Anzeige
AW: Excel-Tabelle in HTML
Oberschlumpf
Hi Petra
Wenn Du mit Hilfe dieses Befehls
If InStr(1, lstrZeile, "[div id="DeliverablesList_")=1 then
die richtige Zeile gefunden hast, dann musst Du in dieser Zeile nach der Position suchen, ab der das Wort "Center" beginnt, und dann eben dieses Wort gegen "right" oder "left" austauschen, und den Rest der Zeile wieder dranhängen.
Z Bsp so:

If InStr(1, lstrZeile, "[div id="DeliverablesList_")=1 then
lstrZeile = Left(lstrZeile, InStr(1, lstrZeile, "[div id="center")) & "left" & Right(lstrZeile, Len(lstrZeile) - InStr(1, lstrZeile, "[div id="center") - 6)
Print #2, lstrZeile
End If

Dieser Code bedeutet:
wenn Zeile mit "[div...usw" gefunden, dann
Inhalt von lstrZeile =
alle Zeichen links vom Wort "center"
PLUS
das Wort "left"
PLUS
alle Zeichen rechts vom Wort "center"
wenn rechtsbündig, musst Du natürlich "right" eintragen
Du solltest diesen Code erst mal mit einer Kopie der HTM-Datei testen, da ich ihn hier einfach nur hingeschrieben habe, ohne zu testen.
Aber vom Prinzip müsste es funktionieren.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Excel-Tabelle in HTML
Oberschlumpf
ups...Hi Petra....Korrektur!
Richtig müsste der Befehlsblock so sein:

If InStr(1, lstrZeile, "[div id="DeliverablesList_")=1 then
lstrZeile = Left(lstrZeile, InStr(1, lstrZeile, "center")) & "left" & Right(lstrZeile, Len(lstrZeile) - InStr(1, lstrZeile, "center") + 6)
Print #2, lstrZeile
End If

Sorry, wer des Copy & Paste nicht mächtig ist, sollte besser NUR Tippen!..*rotwerd* :-)
Ciao
Thorsten

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige