Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
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

Einflussnahme auf die *.htm Veröffentlichung?

Einflussnahme auf die *.htm Veröffentlichung?
15.01.2018 10:30:56
Juergen
Hallo zusammen,
ich nutze die Möglichkeit, dass bei Speicherung des Worksheets eine *.htm Datei erstellt wird. Diese wird dann per Browser an einigen Clients angezeigt.
Frage:
nachdem teilweise an den Clients die Funktion der "F5" Taste zum Refresh des Browserinhaltes nicht zur Verfügung steht, bestünde die Möglichkeit auf den HTML Code vor Veröffentlichung schon Einfluß mittels Ergänzungen zu nehmen?
Ich kann zwar nachträglich z.B. einen HTML "refresh" Befehl einbauen, doch würde der ja bei der nächsten Veröffentlichung natürlich wieder weggeklatscht.
Vielleicht hat jemand dazu eine Idee!?
Danke & Gruss,
Juergen

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einflussnahme auf die *.htm Veröffentlichung?
15.01.2018 10:36:39
Christian
Hallo Jürgen,
wäre dies nicht vielleicht ein Workaround:
- Du erstellst in Excel die HTM seite und speicherst diese mit VBA an einer Stelle, auf die alle Clients zugreifen können. Und jeder öffnet die htm-Datei von dort aus. Wenn du dort dann einen 5-Minuten Refresh einbaust, sollte es doch für die Idee passen.
Was hälst du davon?
VG,
Chris
AW: Einflussnahme auf die *.htm Veröffentlichung?
15.01.2018 16:03:15
Juergen
Hallo Christian,
danke für deine Nachricht.
Soweit wie du beschrieben hast, wird es schon gemacht. Nur sind etliche Clients eben nicht mit Tastatur, somit auch kein Refresh per Tastatur möglich.
Danke & Gruss,
Juergen
Anzeige
HTML speichern und automatisch aktualisieren
15.01.2018 12:56:15
ChrisL
Hi Jürgen
Hier eine Idee:
https://www.herber.de/bbs/user/118974.txt

Sub Publish()
Dim strPfad As String, strTempFile As String, strRealFile As String, strZeile As Variant
strPfad = "C:\Pfad\"
strTempFile = "temp.htm"
strRealFile = "Mappe1.htm"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strPfad & strTempFile, _
FileFormat:=xlHtml, ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
Open strPfad & strTempFile For Input As #1
Open strPfad & strRealFile For Output As #2
Do While Not EOF(1)
Line Input #1, strZeile
If Left(strZeile, 17) = "siehe Anhang" Then _
strZeile = "siehe Anhang"
Print #2, strZeile
Loop
Close #1
Close #2
End Sub

Die Datei wird erst als "temp" gespeichert. Dann wird der Refresh-Befehl als Meta-Tag eingebaut. Die Zahl 5 steht für den Aktualisierungsintervall von 5 Sekunden.
Nachteil: Die Temp Datei kann nicht automatisch gelöscht werden, da diese aufgrund des Speichern-Unter in Excel noch in Gebrauch ist.
cu
Chris
Anzeige
AW: Vielen Dank!
15.01.2018 16:05:00
Juergen
Hallo Chris,
vielen Dank für deine Mühe.
Das funktioniert auch soweit. Doch aus Funktionalitätsgründen, wäre die Lösung von Sepp in meinem Fall besser.
Danke & Gruss,
Juergen
AW: Einflussnahme auf die *.htm Veröffentlichung?
15.01.2018 13:07:40
Sepp
Hallo Jürgen,
ein Beispiel:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub publicateTest()
Dim strFile As String, strTemp As String, ff As Integer

Const clngRefresh As Long = 120 'Aktualisierungsintervall in Sekunden - Anpassen!

strFile = Environ("userprofile") & "\desktop\test.htm" 'Pfad der HTM-Datei - Anpassen!

strTemp = RangeToHTML(Sheets("Tabelle1").Range("A1:H15")) 'Tabelle und Bereich anpassen!

strTemp = Replace(strTemp, "<meta name=ProgId content=Excel.Sheet>", _
  "<meta name=ProgId content=Excel.Sheet>" & vbLf & _
  "<meta http-equiv='refresh' content='" & clngRefresh & "'>")

ff = FreeFile

Open strFile For Output As #ff
Print #ff, strTemp
Close #ff

End Sub

Private Function RangeToHTML(objRange As Range) As String
Dim strFilename As String
strFilename = Environ$("TEMP") & "/temp.htm"
objRange.Parent.Parent.PublishObjects.Add( _
  SourceType:=xlSourceRange, _
  Filename:=strFilename, _
  Sheet:=objRange.Parent.Name, _
  Source:=objRange.Address, _
  HtmlType:=xlHtmlStatic).Publish True
RangeToHTML = CreateObject("Scripting.FileSystemObject"). _
  GetFile(strFilename).OpenAsTextStream(1, -2).ReadAll

RangeToHTML = Replace(RangeToHTML, "align=center x:publishsource=", _
  "align=left x:publishsource=")
RangeToHTML = Replace(RangeToHTML, "<table border=0", _
  "<table align=left border=0")
RangeToHTML = "<br><br><div>" & RangeToHTML & "</div><br>"
Kill strFilename
End Function

Gruß Sepp

Anzeige
AW: ausgezeichnet
15.01.2018 16:08:08
Juergen
Hallo Sepp,
vielen Dank für deine Bemühungen! Habe die Funktion am laufen, klappt einwandfrei!
Frage;
ich habe nun die Funktion auf eine Schaltfläche gelegt. Könnte man diese um den gleichzeitigen Speichervorgang der Arbeitsmappe ergänzen? Dann würde es 2 Fliegen mit einer klappe schlagen.
Danke & Gruss,
Juergen
AW: ausgezeichnet
15.01.2018 16:58:43
Sepp
Hallo Jürgen,
dazu brauchst du nur am Ende des Codes
ThisWorkbook.Save

einfügen.
Gruß Sepp

Anzeige
AW: ...jetzt läuft alles perfekt :)
15.01.2018 17:40:51
Juergen
Hallo Sepp,
vielen Dank für deine wiederholte Unterstützung!
Ich hätte nie gedacht dass es dafür eine Lösung gibt....aber es ist unglaublich, was du da wieder aus dem Ärmel geschüttelt hast. Herzlichen Dank für deine Mühe!
btw: heute war dein Termin2Outlook Tool schon im Einsatz! Genial!
Gruss, Juergen
AW: kleiner Nachtrag zum HTML-Titel einfügen
16.01.2018 11:11:55
Juergen
Hallo Sepp,
eine Sache ist noch bei Nutzung aufgefallen, da jetzt in den Browser-Registerkarten kein Titel mehr steht:
derzeit wird kein Titel in die htm geschrieben. Wie oder wo müsste der Code um dies ergänzt werden?
Hier die HTML Anweisung für einen Titel vom Standard Excel-Export zur htm:

Hier der verwendete Code von dir:
https://www.herber.de/bbs/user/119006.txt
Danke & Gruss,
Juergen
Anzeige
AW: kleiner Nachtrag zum HTML-Titel einfügen
16.01.2018 11:28:28
Sepp
Hallo Jürgen,
kein Problem.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub publicateTest()
Dim strFile As String, strTemp As String, ff As Integer

Const clngRefresh As Long = 14400 'Aktualisierungsintervall in Sekunden - Anpassen!

strFile = "y:\Vorlagen\KFZ ------ Maschinenwartung\KFZ.htm" 'Pfad der HTM-Datei - Anpassen!

strTemp = RangeToHTML(Sheets("Tabelle1").Range("A1:Q19")) 'Tabelle und Bereich anpassen!

'Refresh einfügen
strTemp = Replace(strTemp, "<meta name=ProgId content=Excel.Sheet>", _
  "<meta name=ProgId content=Excel.Sheet>" & vbLf & _
  "<meta http-equiv=refresh content=" & clngRefresh & ">")

'Titel einfügen
strTemp = Replace(strTemp, "</style>", "</style>" & vbLf & "<title>Fuhrpark</title>" & vbLf)

ff = FreeFile

Open strFile For Output As #ff
Print #ff, strTemp
Close #ff

ThisWorkbook.Save
Application.Quit
End Sub

Private Function RangeToHTML(objRange As Range) As String
Dim strFilename As String
strFilename = Environ("userprofile") & "\temp.html" 'Das ist nur ein temporärer Name - NICHT anpasen!!
objRange.Parent.Parent.PublishObjects.Add( _
  SourceType:=xlSourceRange, _
  Filename:=strFilename, _
  Sheet:=objRange.Parent.Name, _
  Source:=objRange.Address, _
  HtmlType:=xlHtmlStatic).Publish True
RangeToHTML = CreateObject("Scripting.FileSystemObject"). _
  GetFile(strFilename).OpenAsTextStream(1, -2).ReadAll

RangeToHTML = Replace(RangeToHTML, "align=center x:publishsource=", _
  "align=left x:publishsource=")
RangeToHTML = Replace(RangeToHTML, "<table border=0", _
  "<table align=left border=0")
RangeToHTML = "<br><br><div>" & RangeToHTML & "</div><br>"
Kill strFilename
End Function

Gruß Sepp

Anzeige
AW: kleiner Nachtrag zu HTML-images
16.01.2018 13:15:34
Juergen
Hallo Sepp,
herzlichen Dank für die schnelle Ergänzung des Codes. Läuft einwandfrei! :)
Frage zur Tabelle:
beim Standardverfahren zur *.htm Erstellung wird ein Verzeichnis im selben Ordner gebildet, welche die beim Export die Schaltflächen und Schriften als images listet und eine Filelist beinhaltet. Darauf greift dann die *.htnm per ID dann zu und die images werden gefunden und eingeblendet.
Per Funktion-gesteuerten Export einer *.htm datei fehlt dieses nun. Funktionalität ist zwar insgesamt unbeeinträchtigt, aber schaut halt etwas eigenartig aus, weil eben die Hyperlinks unbedient bleiben.
Nur wenn es nicht zuviel Arbeit macht und überhaupt techn. möglich, hättest du da auch eine Lösung?
Userbild
Userbild
Danke & Gruss,
Juergen
Anzeige
AW: kleiner Nachtrag zu HTML-images
16.01.2018 14:10:27
Sepp
Hallo Jürgen,
teste mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub publicateTest()
Dim strFile As String, strTemp As String, ff As Integer

Const clngRefresh As Long = 14400 'Aktualisierungsintervall in Sekunden - Anpassen!

strFile = "y:\Vorlagen\KFZ ------ Maschinenwartung\KFZ.htm" 'Pfad der HTM-Datei - Anpassen!

With ThisWorkbook.WebOptions
  .OrganizeInFolder = True
  .LocationOfComponents = Left(strFile, InStrRev(strFile, "\"))
  .DownloadComponents = True
End With

strTemp = RangeToHTML(Sheets("Tabelle1").Range("A1:Q19"), strFile) 'Tabelle und Bereich anpassen!

'Refresh einfügen
strTemp = Replace(strTemp, "<meta name=ProgId content=Excel.Sheet>", _
  "<meta name=ProgId content=Excel.Sheet>" & vbLf & _
  "<meta http-equiv=refresh content=" & clngRefresh & ">")

'Titel einfügen
strTemp = Replace(strTemp, "</style>", "</style>" & vbLf & "<title>Fuhrpark</title>" & vbLf)

ff = FreeFile

Open strFile For Output As #ff
Print #ff, strTemp
Close #ff

'ThisWorkbook.Save
'Application.Quit
End Sub

Private Function RangeToHTML(objRange As Range, FileName As String) As String
objRange.Parent.Parent.PublishObjects.Add( _
  SourceType:=xlSourceRange, _
  FileName:=FileName, _
  Sheet:=objRange.Parent.Name, _
  Source:=objRange.Address, _
  DivID:="ID01", _
  HtmlType:=xlHtmlStatic).Publish True
RangeToHTML = CreateObject("Scripting.FileSystemObject"). _
  GetFile(FileName).OpenAsTextStream(1, -2).ReadAll

RangeToHTML = Replace(RangeToHTML, "align=center x:publishsource=", _
  "align=left x:publishsource=")
RangeToHTML = Replace(RangeToHTML, "<table border=0", _
  "<table align=left border=0")
RangeToHTML = "<br><br><div>" & RangeToHTML & "</div><br>"
End Function

Gruß Sepp

Anzeige
AW: HTML-läuft nun! Danke!
16.01.2018 14:48:49
Juergen
Hallo Sepp,
unheimlich, aber läuft auf Anhieb! :)
Herzlichen Dank wieder für deine tolle Hilfe.
Ohne diese hätte ich wieder blass ausgesehen...
Danke & Gruss,
Juergen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige