Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Inhaltsverzeichnis

VBA Datei Speichern Unter Dialog mit HTML+Paramete

VBA Datei Speichern Unter Dialog mit HTML+Paramete
norman
Hi Leutz,
steh gerade auf dem Schlauch (sonst wäre ich ja nicht hier :)) Excel bietet mir den "Datei Speichern unter"-Dialog ja per VBA an: GetSaveAsFilename.
Jetzt will ich aber HTML speichern, und da gibt es ne Menge Parameter, die ich im GetSaveAsFilename vermisse! (Gesamte Arbeitsmappe, Tabelle, Veröffentlichen)... Wie bekomme ich das hin, dass ich auch diese Parameter sehe und vor allem danach auch verarbeiten kann?
Hab schon rumgesucht, find aber nix! Bin sehr dankbar für Hilfe.
Viele Grüße
Norman
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
17.07.2010 08:21:38
Nepumuk
Hallo Norman,
an diesen Dialog kommst du nicht ran. Bastle dir ein Userform über das du die entsprechenden Parameter setzen kannst.
Gruß
Nepumuk
Vielen Dank!
17.07.2010 10:56:17
norman
Vielen Dank ihr Beiden, ich denke, damit komme ich weiter. Wusste gar nicht, dass es so was wie PublishObjects gibt... Naja, man lernt nie aus. Dann werde ich mal das Formular basteln :)
Viele Grüße
Norman
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
18.07.2010 11:10:46
norman
Hi alle,
noch ne Frage: Bei diesem Code
wb.PublishObjects.Add(xlSourceWorkbook, newFullName, , , xlHtmlStatic, , CStr(HTMLParam.Titel.Text))
bekomme ich immer folgenden Error:
Application-defined or object-defined error.
wb ist valide, in newFullName steht ein Text und HTMLParam.Titel is das control, das den Titel enthält (in diesem Falle leer).
Weiß jemand was ich falsch malche? Habe auch schon die optionalen Werte mit "" aufgefüllt, bringt auch nix?!?!
Viele Grüße
Norman
Anzeige
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
18.07.2010 19:26:32
fcs
Hallo Norman,
Die Parameter dürfen hier nicht in Klammern stehen. Jedenfalls führt das bei mir unter Excel 2007 schon beim editieren zu einem Fehler.
Gruß
Franz
hier ein Beispielmakro wie es unter Excel 2007 die komplete XLS-Datei als HTML-Datei speichert
Sub aatest()
Dim sTitel As String
Dim newFullName
Dim wb As Workbook
Set wb = ThisWorkbook
'Test zeilen
sTitel = ""
newFullName = "C:\Users\Public\Test\Test20100718.htm"
wb.PublishObjects.Add SourceType:=xlSourceWorkbook, Filename:=newFullName, _
HtmlType:=xlHtmlStatic, Title:=CStr(sTitel)
'alter Code
'wb.PublishObjects.Add(xlSourceWorkbook, newFullName, , , xlHtmlStatic, , _
CStr(HTMLParam.Titel.Text))
'dein neuer Code
wb.PublishObjects.Add xlSourceWorkbook, newFullName, , , xlHtmlStatic, , _
CStr(HTMLParam.Titel.Text)
End Sub

Anzeige
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
18.07.2010 21:14:09
norman
Hi Franz, vielen Dank für die Antwort, keider liegt es daran nicht, denn davor steht noch
set op =
Das hatte ich weg gelassen, sorry.
Läuft immer noch nicht... Noch jemand eine Idee?
Viele Grü0e
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
19.07.2010 10:33:42
fcs
Hallo Norman,
ich hab jetzt nochmals unter Excel 2003 getestet. Da gibt es scheinbar ein Problem komplette Arbeitsmappen als statische Webseiten zu veröffentlichen. Mit HTMLTyp = xlHtmlStatic geht es nicht. Mit xlHtmlCalc geht es, allerdings sind dann die Zellen der Tabellen auf der Webseite editierbar. Außerdem muss dann eine entsprechende Webkomponente aus MS-Office installiert sein.
Dir bleibt ggf. nichts anderes übrig, als die Tabellen der Arbeitsmappe einzeln als statische Webseiten zu speichern.
Gruß
Franz
'Beispiele für aufgezeichneten Code - Die Parameterbezeichnungen hab ich manuell ergänzt
'Sheet als Webseite (statisch)
With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceSheet, _
Filename:="C:\Lokale Daten\Test\HTML-Publishing01.htm", _
Sheet:="Tab1 (2)", Source:="", HtmlType:=xlHtmlStatic, _
DivID:="HTML-Publishing_9484", Title:="Test HTML 20100719-A")
.Publish (True)
.AutoRepublish = False
End With
'Arbeitsmappe als Webseite (interaktiv)
With ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceWorkbook, _
Filename:="C:\Lokale Daten\Test\HTML-Publishing02.htm", _
HtmlType:=xlHtmlCalc, _
DivID:="HTML-Publishing_9484", Title:="Test HTML 20100719-B")
.Publish (True)
.AutoRepublish = False
End With

Anzeige
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
19.07.2010 23:02:04
norman
Hi Franz,
ach Du meine Fresse, das glaube ich ja nicht... Das muss doch gehen!!! Ich muss bestimmt noch irgend etwas setzen, was ich vergessen habe. Ich habe wie von Dir vorgeschlagen mit xlHTMLCalc getestet und bingo es geht!!!
Komischer Weise sieht meine Makro-Aufzeichnung so aus, wenn ich keine Interaktivität hinzufüge:
ActiveWorkbook.SaveAs Filename:="S:\xlTest\Mappe1.htm", FileFormat:=xlHtml _
, ReadOnlyRecommended:=False, CreateBackup:=False
Ich glaube damit kann ich erst mal auch leben. Wenn ich mit veröffentlichen arbeite habe ich unter 2003 immer Interaktivität, was ich aber nicht will. Falls noch jemand eine Idee hat freue ich mich, anonsten implementiere ich eben einmal SaveAs und ein mal PublishObjects.
Nebenbei, static geht, wenn ich nur eine Tabelle angebe.
Schon verrückt...
Anzeige
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
19.07.2010 23:13:55
norman
Noch eine schaurige Ergänzung:
Ich habe SaveAs implementiert (zumindest für static). Das führt zu dem unangenehmen Effekt, dass die XLS Datei dann auch zu einer HTML-Datei in Excel wird. Bei PublishObjects bleibt die Datei, was sie ist, nämlich xls.
Das finde ich nun wirklich unbefriedigend. Bin scharf auf Ideen :)
Viele Grüße
Norman
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
19.07.2010 23:48:26
fcs
Hallo Norman,
das mit dem SaveAs hatte ich auch schon probiert, aber wegen der von dir beschriebenen Problematik wieder verworfen.
Mit folgender Anpassung wird nach dem Speichern als HTML-Datei die ursprüngliche Exceldatei wieder angezeigt. Als Vorsichtsmassnahme hab ich das Speichern eingebaut, bevor die HTML-Konversion beginnt.
Gruß
Franz
Sub bbtest()
Dim wb As Workbook, sFilename As String
Set wb = ActiveWorkbook
sFilename = wb.FullName
If wb.Saved = False Then wb.Save
wb.SaveAs Filename:="S:\xlTest\Mappe1.htm", FileFormat:=xlHtml, _
ReadOnlyRecommended:=False, CreateBackup:=False
Workbooks.Open Filename:=sFilename
wb.Close savechanges:=False
End Sub

Anzeige
AW: VBA Datei Speichern Unter Dialog mit HTML+Paramete
20.07.2010 00:15:31
norman
Hmmmmmm, interessante Idee, danke Franz. Hänge ziemlich tief in before_save drin und muss schauen, ob das geht. Aktuell funzt es mit dem SaveAs, auch wenn es nicht schön ist. Mal schauen, was meine Kunden sagen...
Dank Dir noch mal
Gruß Norman
Wieder auf gemacht
20.07.2010 23:43:51
norman
Tja, vollkommen komisch unter 2003. Mal gehts, mal nicht. Ich kann aber irgendwie kein reproduzierbares Verhalten erzeugen... Hat jemand ein ähnliches Problem?
Hier mein (unvollständiger) Code:
Dim typ As Long ' 0 = gesamte Tabelle, 1 = spezifischer Bereich
typ = 0 ' Tabelle
Dim r As Range
Set r = wb.Application.Selection
' Keine Range? (kann eigentlich gar nicht sein, aber egal...)
If r Is Nothing Then
typ = 0
Else
' Mehr als eine Are? Dann Tabelle
If r.Areas.Count > 1 Then
typ = 0
Else
' Nur eine Zelle? Dann Tabelle
If r.Count = 1 Then
typ = 0
Else
typ = 1
End If
End If
End If
If typ = 0 Then
HTMLParam.Auswahl.Caption = "Auswahl: Tabelle"
Else
HTMLParam.Auswahl.Caption = "Auswahl: " & r.Address
End If
G_Abbruch = True
' Kleines eigenes Formular
HTMLParam.Show vbModal
If Not G_Abbruch Then
' War im Formular die Interaktivität angeklickt?
Dim htmlTyp As Long
If HTMLParam.Interaktivität.Value <> False Then
htmlTyp = xlHtmlCalc
Else
htmlTyp = xlHtmlStatic
End If
Err.Clear
On Error Resume Next ' falls was schief geht!
' Wenn die gesamte Arbeitsmappe ausgewählt wurde
If HTMLParam.GesamteArbeitsmappe.Value <> False Then
' Wenn statisch dann...
If htmlTyp = xlHtmlStatic Then
xlapp.EnableEvents = False
wb.SaveAs filename:=newFullName, FileFormat:=xlHtml, ReadOnlyRecommended:=False, CreateBackup:=False
xlapp.EnableEvents = True
If Err.Number <> 0 Then
MsgBox "Die Datei konnte nicht gespeichert werden, bitte versuchen Sie es später erneut.", vbInformation
Err.Clear
End If
' Set po = wb.PublishObjects.Add(xlSourceWorkbook, newFullName, , , xlHtmlStatic, , CStr(HTMLParam.Titel.Text))
' po.Publish True
' po.AutoRepublish = False
' Ansonsten dynamisch!!!
Else
' Und publischen
With wb.PublishObjects.Add(xlSourceWorkbook, newFullName, , , xlHtmlCalc, , CStr(HTMLParam.Titel.Text))
.Publish True
.AutoRepublish = False
End With
If Err.Number <> 0 Then
MsgBox "Die Datei konnte nicht gespeichert werden, bitte versuchen Sie es später erneut.", vbInformation
Err.Clear
End If
End If
' Ansonsten wurde nur ein Bereich oder die aktive Tabelle selektiert
Else
' Tabelle?
If typ = 0 Then
With wb.PublishObjects.Add(xlSourceSheet, newFullName, wb.ActiveSheet.name, , htmlTyp, , CStr(HTMLParam.Titel.Text))
.Publish True
.AutoRepublish = False
End With
If Err.Number <> 0 Then
MsgBox "Die Datei konnte nicht gespeichert werden, bitte versuchen Sie es später erneut.", vbInformation
Err.Clear
End If
' Ne, dann definierter Bereich
Else
With wb.PublishObjects.Add(xlSourceSheet, newFullName, wb.ActiveSheet.name, r.Address, htmlTyp, , CStr(HTMLParam.Titel.Text))
.Publish True
.AutoRepublish = False
End With
If Err.Number <> 0 Then
MsgBox "Die Datei konnte nicht gespeichert werden, bitte versuchen Sie es später erneut.", vbInformation
Err.Clear
End If
End If
End If
End If
Set r = Nothing
Anzeige
AW: Wieder auf gemacht
21.07.2010 01:03:43
norman
Boah bin ich doof! .publish muss bei mir Klammern haben (.publish(true)). Außerdem hatte ich bei der Range noch xlSourceSheet drin. Siehe da, nun gehts.
Danke an Euch!

345 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige