HTML-Datei erstellen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: HTML-Datei erstellen

Re: HTML-Datei erstellen

von Axel Richter » Fr, 28.01.2011 11:11

Hallo,
Also eine Artikelnummer pro Zeile. Z.Bsp. "A1:D1"
In den jeweiligen Spalten stehen die HTML-Fragmente. Wenn man eine Zeile markiert hat kommt obiger Code raus, usw.
A B C D
<div class="element"> <a href="http://www...?artno=12345"> 12345 </a></div>

So?
Ich benötige also nur noch den Starbasic-Code, der sagt: "welcher Zellbereich wurde vom Benutzer markiert? Mache daraus einen String, der in den <body> einer HTML-Datei eingefügt wird.
Hm. "Welcher Zellbereich wurde vom Benutzer markiert?" - ist bei Excel 2010 jetzt UsedRange? Das glaube ich erst, wenn ich es sehe. UsedRange ist der komplette genutzte, sprich mit Daten gefüllte, Tabellenbereich. "Welcher Zellbereich wurde vom Benutzer markiert?" - ist Selection. Was meinst Du nun wirklich?

Nochmals hm. "einen String, der in den <body> einer HTML-Datei eingefügt wird" - Du meinst in die Tabellenzelle der HTML-Table, die in Deinem Code drin war?

Noch Mal halb geraten:

Code: Alles auswählen

Sub html_Datei_erstellen()

FF = FreeFile()
Open "/home/axel/Dokumente/test03.html" For Output As FF 'DateiPfad bitte anpassen

oSelection = thisComponent.CurrentSelection

if not oSelection.supportsservice("com.sun.star.table.CellRange") then exit sub

aDaten = oSelection.getDataArray()

' html-Grundgerüst erstellen
' & vbLf erzeugt im html-Quelltext einen Zeilenumbruch
Print #FF, "<html>"
Print #FF, "<!-- diese Datei wurde über eine VBA-Prozedur erstellt-->"
Print #FF, "<head>"
Print #FF, "</head>"
Print #FF, "<body bgcolor=""#97A4B1"">"

' html-Tabelle einfügen
Print #FF, "<table width=""550px"" align=""center""" _
& "cellpadding=""10px"">"
' Zeile Spalte einfügen
Print #FF, "<tr><td bgcolor=""#FAF8CB"">"

'alle Bereichsdaten ausgeben
for i = 0 to ubound(aDaten)
 aZeile = aDaten(i)
 for j = 0 to ubound(aZeile)
  Print #FF, aZeile(j)
 next
 Print #FF, chr(10) & chr(13)
next

' alle html-tags wieder schließen
Print #FF, "</tr>"
Print #FF, "</table>"
Print #FF, "</body>"
Print #FF, "</html>"
Close #FF

End Sub
viele Grüße

Axel

Re: HTML-Datei erstellen

von Axel Richter » Fr, 28.01.2011 08:30

Hallo,
Das Ganze funktioniert in Excel 2010 und Excel for MAC 2011.
Ja, möglich. 2010 konnte ich mir nicht auch schon wieder leisten.

Ich hatte aber auch gefragt, welche String-Entsprechung des Daten-Arrays Du denn erwartest? Sprich, was verkettet 2010 da in den String rein? Einfach nur die Zellinhalte nacheinander? Oder XML? Welches? Oder HTML? Welches?

Mal geraten:

Code: Alles auswählen

Sub html_Datei_erstellen()

FF = FreeFile()
Open "/home/axel/Dokumente/test03.html" For Output As FF 'DateiPfad bitte anpassen

ActiveSheet = thisComponent.CurrentController.ActiveSheet

oCursor = activesheet.createCursor()
oCursor.gotoStartOfUsedArea(False)
oCursor.gotoEndOfUsedArea(True)

aDaten = oCursor.getDataArray()

' html-Grundgerüst erstellen
' & vbLf erzeugt im html-Quelltext einen Zeilenumbruch
Print #FF, "<html>"
Print #FF, "<!-- diese Datei wurde über eine VBA-Prozedur erstellt-->"
Print #FF, "<head>"
Print #FF, "</head>"
Print #FF, "<body bgcolor=""#97A4B1"">"

' html-Tabelle einfügen
Print #FF, "<table width=""550px"" align=""center""" _
& "cellpadding=""10px"">"
' Zeile Spalte einfügen
Print #FF, "<tr><td bgcolor=""#FAF8CB"">"
'Tabelle für den Bereich
Print #FF, "<table width=""100%"" border=""1"">" 
for i = 0 to ubound(aDaten)
 Print #FF, "<tr>"
 aZeile = aDaten(i)
 for j = 0 to ubound(aZeile)
  Print #FF, "<td>" & aZeile(j) & "</td>"
 next
 Print #FF, "</tr>"
next
Print #FF, "</table>"  
Print #FF, "</td></tr>"
' alle html-tags wieder schließen
Print #FF, "</tr>"
Print #FF, "</table>"
Print #FF, "</body>"
Print #FF, "</html>"
Close #FF

End Sub
viele Grüße

Axel

Re: HTML-Datei erstellen

von Axel Richter » Fr, 28.01.2011 07:16

Hallo,
in Excel geht das super mit dem Bereich
In welchem Excel soll das super gehen? Bei mir kann weder Excel 2007 noch Excel 2003 einen mehrzelligen Range einfach in einen String rein verketten. Was soll dann da als String auch herauskommen? Ein mehrzelliger Range ist in Excel ein Zweidimensionales Array. Wie soll dessen String-Entsprechung denn Deiner Meinung nach aussehen?

viele Grüße

Axel

Re: HTML-Datei erstellen

von Axel Richter » Mi, 26.01.2011 19:35

Hallo,

Code: Alles auswählen

Print #FF, "<tr><td bgcolor=""#FAF8CB"">" & Range(Bereich) & "</td></tr>"
Naja, das geht in Excel auch nur solange gut, wie in Bereich nur eine Zelle adressiert wird. Sonst gibt es einen Laufzeitfehler '13': Typen unverträglich, wenn Du versuchst einen Bereich mit mehreren Zellen einfach so in einen String zu verketten.

Ansonsten geht das in Starbasic fast genau so:

Code: Alles auswählen

Sub html_Datei_erstellen()

FF = FreeFile()
Open "Z:\test03.html" For Output As FF

ActiveSheet = thisComponent.CurrentController.ActiveSheet

Bereich = ActiveSheet.getCellByPosition(0,0) 'Zelle A1

' html-Grundgerüst erstellen
' & vbLf erzeugt im html-Quelltext einen Zeilenumbruch
Print #FF, "<html>"
Print #FF, "<!-- diese Datei wurde über eine VBA-Prozedur erstellt-->"
Print #FF, "<head>"
Print #FF, "</head>"
Print #FF, "<body bgcolor=""#97A4B1"">"

' html-Tabelle einfügen
Print #FF, "<table width=""550px"" align=""center""" _
& "cellpadding=""10px"">"
' Zeile Spalte einfügen
Print #FF, "<tr><td bgcolor=""#FAF8CB"">" & Bereich.String & "</td></tr>"

' alle html-tags wieder schließen
Print #FF, "</tr>"
Print #FF, "</table>"
Print #FF, "</body>"
Print #FF, "</html>"
Close #FF

End Sub
viele Grüße

Axel

Nach oben