Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
736to740
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
736to740
736to740
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

tabellenblätter in html-datei abspeichern

tabellenblätter in html-datei abspeichern
25.02.2006 17:20:22
simi
Ich habe ein Makro geschrieben, welches automatisch erkennt welche Zellen in einem Tabellenblatt gefüööt sind und welche nicht (nur erste Spalte auf 3 "Leerzellen" genau). Danach wird dieser Bereich in einer html-Datei abgespeichert!
Ist es jetz nun möglich alle Tabellenblaätter, und ihre Bereiche, in in eine html-Datie abzuspeichern?
Hier ist noch der Link zur Detei (Das Makro ist noch nicht überarbeitet un man könnte es noch effizienter machen!): https://www.herber.de/bbs/user/31389.xls
Hier wäre noch eine andere Version von "Reinhard", welche aber nicht richtig funktioniert, vielleicht findet ja jemand den Fehler:
Option Explicit
Option Base 1

Private Sub btnSprueche_Click()
Dim zei As Long, n As Byte, zei4 As Long, ws4 As Worksheet, Blatt
Blatt = Array("Tabelle1", "Tabelle9", "Tabelle12", "Tabelle2")
Set ws4 = Worksheets(Blatt(UBound(Blatt)))
For n = 1 To UBound(Blatt) - 1
With Worksheets(Blatt(n))
zei = 1
While (.Cells(zei + 1, 1) & .Cells(zei + 2, 1) & .Cells(zei + 3, 1) <> "")
zei = zei + 1
Wend
zei4 = IIf(n = 1, 1, ws4.Range("A65536").End(xlUp).Row + 1)
.Range(Cells(1, 2), Cells(zei, 2)).Copy ws4.Cells(zei4, 1)
End With
Next n
Range(Cells(1, 1), Cells(zei4 + zei, 2)).Select
With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
"C:\Dokumente und Einstellungen\Simon\Desktop\sprueche_makro.htm", Blatt(4), _
"" & Range(Cells(1, 1), Cells(zei4 + zei, 2)).Address & "", xlHtmlStatic, Blatt(4), "")
.Publish (True)
.AutoRepublish = False
End With
End Sub

Für das Tabellenblatt1 (ws1) funktioniert das ganze, aber wenn dann n grösser als 1 ist (also das erste mal bei n=2)""With Worksheets(Blatt(n))"", dann kommt eine Fehlermeldung "Index ausserhalb des gültigen Bereichs"!!
danke im voraus
simi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: tabellenblätter in html-datei abspeichern
25.02.2006 17:45:08
Reinhard
Hi Simi,
im alten Thread habe ich dir versucht Array zu erläutern.
Der Fehler kommt weil du kein Blatt "Tabelle9" hast. Du musst die Namen in dem Array anpassen an deine Blattnamen, Erst die 3 Quellblätter, dann das Zielblatt.
Weiterhin
.Range(Cells(1, 2), Cells(zei, 2)).Copy ws4.Cells(zei4, 1)
abändern in
.Range(Cells(1, 1), Cells(zei, 2)).Copy ws4.Cells(zei4, 1)
Ich habe nur Excel2000, da gibts wohl kein .AutoRepublish.
Ich lasse die Frage noch offen, da
.Range(Cells(1, 1), Cells(zei, 2)).Copy ws4.Cells(zei4, 1)
nicht funktioniert. Ich werd nie begreifen warum nicht und werd wohl immer an diesem Kopierbefehl hängen bleiben wenn es um 2 verschiedene Blätter geht *schwer seufz*
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: tabellenblätter in html-datei abspeichern
25.02.2006 17:51:36
simi
ok dann werde ich das mal änderen!!
hoffe es funktioniert dann! und sonst frage ich mal einen info-lehrer! werde dir noch berichten, ob es läuft oder nicht!
gruess
simi
AW: tabellenblätter in html-datei abspeichern
25.02.2006 17:52:11
Leo
.Range(.Cells(1, 1), .Cells(zei, 2)).Copy ws4.Cells(zei4, 1)
Beachte die Punkte vor Cells, warum das so ist, steht in der Hilfe.
mfg Leo
AW: tabellenblätter in html-datei abspeichern
25.02.2006 18:14:23
Reinhard
Hallo Leo,
danke dir :-)
@Simi,
abgesehen von dem Umwandeln was wohl bei Xl2000 nicht alle deine Parameter hat klappts jetzt:
Option Explicit
Option Base 1
Private Sub btnSprueche_Click()
Dim zei As Long, n As Byte, zei4 As Long, ws4 As Worksheet, Blatt
Blatt = Array("Tabelle1", "Tabelle2", "Tabelle3", "Tabelle4")
Set ws4 = Worksheets(Blatt(UBound(Blatt)))
For n = 1 To UBound(Blatt) - 1
With Worksheets(Blatt(n))
zei = 1
While (.Cells(zei + 1, 1) & .Cells(zei + 2, 1) & .Cells(zei + 3, 1) <> "")
zei = zei + 1
Wend
zei4 = IIf(n = 1, 1, ws4.Range("A65536").End(xlUp).Row + 1)
.Range(.Cells(1, 1), .Cells(zei, 2)).Copy Destination:=ws4.Cells(zei4, 1)
End With
Next n
'ws4.Activate
'Range(Cells(1, 1), Cells(zei4 + zei, 2)).Select
'With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
'        "C:\Dokumente und Einstellungen\Simon\Desktop\sprueche_makro.htm", Blatt(4), _
'        "" & Range(Cells(1, 1), Cells(zei4 + zei, 2)).Address & "", xlHtmlStatic, Blatt(4), "")
'    .Publish (True)
'    .AutoRepublish = False
'End With
Worksheets(Blatt(1)).Activate
End Sub

Gruß
Reinhard
Anzeige
AW: tabellenblätter in html-datei abspeichern
25.02.2006 18:25:39
Reinhard
Hi Simi,
was ich die ganze Zeit schon fragen wollte, das mit den 3 Leerzellen in Folge, wenn du damit die unterste gefüllte Zelle einer Spalte ermitteln willst, so macht man das normalerweise so:
letzte=range("A65536").end(xlup).row
Das hat 2 Einschränkungen, die aber vernachlässig sind im Normalfall aber man muss sie kennen.
Es ergibt eine 1 wenn die Spalte völlig leer ist und auch eine 1 wenn nur die erste zelle gefüllt ist. Da oft Überschriften in der ersten Zeile stehen, kann man den Punkt meist vergessen.
Es gibt falschen Wert wenn in der Spalte in der Zeile 65536 etwas steht, das gleicht man so aus:
letzte=iif(Range("a65536")"";65536;range("A65536").end(xlup).row)
Es gibt noch eine andere Variante die etzte gefüllte Zelle einer Spalte zu ermitteln, irgendwas mit Rows.count aber da habe ich die Syntax nicht parat. Scau halt hier in die Codes, da wird das genauso oft benutzt wie das oben erläuterte Verfahren.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: tabellenblätter in html-datei abspeichern
26.02.2006 10:39:00
simi
Also ein grosses Danke an alle die mir geholfen haben!!
Jetzt sollte es funktionieren!!! juhui endlich!
Was deine Frage betrift Reinhard: Ich kannte diesen Befehl nicht und habe es dann auf eine andere Art probiert zu lösen! Vielleicht werde ich das noch ändern, mal schauen!
gruess
simi

266 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige