Clever-Excel-Forum

Normale Version: ActiveWorkbook.PublishObjects.Add
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich nutze ein Script um das aktuelle Sheet als html zu speichern und dieses dann per AppleScript per Outlook zu versenden.

With ActiveWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        FileName:=TempFile, _
        Sheet:=ActiveSheet.Name, _
        Source:=rng.Address, _
        HtmlType:=xlHtmlStatic)
        .Publish (True)
End With


Soweit so gut. Das klappt auch alles.

Ich möchte jedoch nun nur eine Spalte (A1:A20 - ist in Source deklariert) speichern. Das klappt auch, aber ich möchte das gerne nicht als Tabelle sondern als reinen html-Text speichern.
- Zelle A1 lesen, als html speichern, neue Zeile
- Zelle A2 lesen, als html anhängen, neue Zeile
- usw.

Jeder Tipp ist willkommen.

Nutze O365 (16.42 Mac).

VG
rs
Hallöchen,

da hatten wir vor ein paar Tagen schon mal etwas in der Art ...

Inhalt-einer-Zelle-Produktbeschreibung-in-HTML?
Hallo, 
danke für den Link, aber leider macht das Script nicht das was ich haben möchten.

Eine komplette Spalte (z.B. A1:A20) soll als HTML abgespeichert werden, jedoch ohne
PHP-Code:
<table
. Ebenso sollen die Formatierungen beibehalten werden.

ActiveWorkbook.PublishObjects.Add erfüllt zwar den Punkt mit den Formatierungen, aber jede Zelle der Spalte ergibt ein
PHP-Code:
<td
- ich möchte es jedoch komplett ohne
PHP-Code:
<table
haben - also, neue Zelle ergibt im html ein
PHP-Code:
<br>. 

Trotzdem Danke.
Hallöchen,

das Script kann man als eine ALternative zum Publish ... sehen und zur Veranschaulichung, wie man da was übernehmen kann. Dort werden die Zellen über Schleifen zu einem HTML-String zusammengeführt. Bei Dir würde eine Schleife reichen, wo Du jeweils ein br ans Ende setzt und den Rest mit table, td und tr usw. weg lässt. Falls Du die Farben übernehmen willst, müsste man die analysieren und ggf. weitere tags setzen. Die Nutzung fester Farben ist dort über die Konstanten auch dabei.

Im Prinzip reicht schon
Code:
For iCnt = 1 to 20
strHTML = strHTML & Cells(iCnt,1).Value & "<br>"
Next

Beim Publish gibt es keinen SourcType Text Sad Du müsstest dann wohl im Anschluss die html durchforsten und die Tabellentags entfernen.

Du kannst es höchstens so vereinfachen, indem Du die Inhalte der 20 Zellen in 20 Zeilen in einer Zelle zusammenfasst Da kommt dann so was bei raus:

PHP-Code:
<tr height=60 style='height:45.0pt'>
  <
td height=60 class=xl6314834 width=80 style='height:45.0pt;width:60pt'>1<br>
    
2<br>
    
3</td>
 </
tr
Da gebe ich Dir natürlich recht. Aber eine Zelenweise auslesen der Formatierung finde ich etwas doof.
Das Script, geht ja, nur dass ich halt eine Tabelle habe.

Ich denke, ich werde den Weg probieren, zuerst alle Inhalte der Zellen in eine zu kopieren, dann das html-File zu erstellen und dann per Script die Table-Info zu löschen.
Leider komme ich hier auch nicht weiter.

Mit
Worksheets("body_du").Range("A10").Copy Destination:=Worksheets("body_du").Range("A30")
kann ich zwar Inhalt plus Formatierung der Zelle in einer andere kopieren, aber wie bekomme ich es hin, dass die alle Zelle A1:A10 in die eine Zelle A3 kopiere ?

Mit ist bewusst, dass ich den Zeilenumbruch in einer Zelle mit vbLf oder Chr(13) mache, aber ich weiss dennoch nicht wie ich das obige machen soll.
Hallöchen,
Nimm nicht copy sondern füge die Zellinhalte zusammen.
Im Prinzip
Range("b1"). Value=Range("a1"). Value & chr(10) & Range("a2"). Value & chr(10)...
Bzw. Du fügst das in einer Schleife zusammen...