Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

ActiveWorkbook.PublishObjects.Add
#1
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
Antwortento top
#2
Hallöchen,

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

Inhalt-einer-Zelle-Produktbeschreibung-in-HTML?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
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.
Antwortento top
#4
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
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#5
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.
Antwortento top
#6
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.
Antwortento top
#7
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...
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste