ingchris
Goto Top

Excel - Tabelle 2010 per FTP auf Website uploaden

Hallo,

Konfiguration: WIN Terminalserver 2008 R2 (64 Bit !!!) in Hyper-V-Umgebung, Office 2010


Aufgabe:

Excel-Tabelle beim Schliessen/speichern von Excel autom. per FTP auf unserer Website aktualisieren


Die - nachfolgend beschriebene - in Excel eingebaute Variante funktioniert NICHT:

- Excel Tabelle - Bereich markieren
- Datei speichern unter --> entpr. FTP-Pfad auswählen, Dateityp: Webseite, die Option "Auswahl: Tabelle" auswählen
- Speichern
- Username/PW eingeben

Weiter ... und Excel "hängt" - Sanduhr läuft - nach einiger Zeit --> Excel: "keine Rückmeldung"
Kann nur über Taskmanager abgebrochen werden!


1) Funktioniert die obig beschriebene Variante bei EUCH ?
(falls ja, kann es sein, dass dies auf dem 64 Bit Hyper-V-Terminalserver NICHT funktioniert!!)


Ich habe einiges im Internet gefunden (VBA, Skripts, Batch) - alles schon etliche Jahre alt - eine VBA-Routine probiert - lieferte allerdings einen FTP - Error.

Nachdem ich auf meinem Server nicht experimentieren möchte -->

2) Hat jemand von Euch eine aktuelle Lösung (Skript o. ä.), die auch zuverlässig auf dem 64 Bit-Server funktioniert ?

müsste m.E. etwa so aussehen - soll autom. beim Schliessen/speichern durchgeführt werden:

- Excel-Tabelle als .xlsx UND als HTML speichern
- die HTML-Datei über ein Skript/Batch Uploaden


Vielen Dank

LG

Content-ID: 186372

Url: https://administrator.de/contentid/186372

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

nikoatit
nikoatit 12.06.2012 um 22:46:24 Uhr
Goto Top
Moin,

du könntest auch den FTP via NetDrive einbinden und beim "Speicher unter" direkt auf dem FTP speichern.
Wäre das etwas?

Gruß
IngChris
IngChris 12.06.2012 aktualisiert um 23:19:04 Uhr
Goto Top
ich habe auf dem Server ein Netzlaufwerk eingerichtet, über das ich auf die Homepage(den Webspace) zugreifen kann.
Den Pfad auf den entsprechenden Ordner gebe ich dann in Excel an, wenn ich die Tabelle als .HTML speichern möchte.
Excel erkennt dann, dass es sich um einen FTP-Zugriff handelt und verlangt Benutzer/KW - wie oben beschrieben "hängt" Excel dann.

Wenn ich die Excel-Tabelle als .HTML in z.B. Ordner auf dem Desktop speichere, so kann ich per Drag&Drop problemlos die HTML-Datei in den entspr. Ordner auf dem Netzlaufwerk speichern (entspricht ja dann auch einem FTP-Zugriff). D.h. das Problem scheint an Excel zu liegen.

Ich habe auch versucht in Excel den entspr. Ordner im Netzlaufwerk bei den vertrauenswürdigen Speicherorten einzutragen - das wird nicht zugelassen (weiß jetzt die genaue Fehlermeldung nicht mehr - die Sicherheitsfunktionen dürften die Freigabe verhindern).

Was genau hat NetDrive für einen Vorteil gegenüber meiner Methode, mit der ich auf die Homepage-(Struktur) über ein Netzlaufwerk zugreife?
nikoatit
nikoatit 13.06.2012 um 09:08:10 Uhr
Goto Top
Ich habe es nicht probiert, aber kann mir vorstellen, dass Excel dann nicht nach den Zugangsdaten fragt.
Kannst du ja mal ausprobieren.
IngChris
IngChris 13.06.2012 um 10:40:46 Uhr
Goto Top
Zitat von @nikoatit:
Ich habe es nicht probiert, aber kann mir vorstellen, dass Excel dann nicht nach den Zugangsdaten fragt.
Kannst du ja mal ausprobieren.

Vielen Dank für den Tipp.

Bitte nicht missverstehen!!
Aber der Server läuft im Produktivbetrieb und ich kann / will nicht nur "ausprobieren".

Eine Lösung über VBA/Makro habe ich eh schon probiert - obwohl ich eigentlich nichts ausprobiere, das ich nicht verstehe - das hat gefloppt.
Ich kann mir nicht leisten den Server "abzuschiessen" , indem ich wieder was installiere das vielleicht funktioniert!

Ich brauche eine Methode, die definitiv auf WIN Terminalserver 2008 R2, 64 Bit (Hyper-V) / Excel 2010 funktioniert!

Trotzdem vielen Dank!

LG
nikoatit
nikoatit 13.06.2012 um 11:10:09 Uhr
Goto Top
Natürlich habe ich das Programm schon installiert und damit gearbeitet face-smile
Auch auf einen Win2003 und Win2008 im Produktivbetrieb!
Und auch schon Dokumente aus Word, Excel und Co. direkt darauf gespeichert.
Meine Aussage mit "ausprobieren" bezug sich lediglich darauf, dass ich nicht nachstellen kann, ob dein spezielles Excel-Dokument sich sauber speichern lässt, ohn nach Zugangsdaten zu fragen.
Ich schlage dir doch kein Tool vor das ich nicht selber benutze oder ausprobiert habe face-smile
Du musst bei NetDrive nur drauf achten, dass du den Cache über die Registry auf ein anderes Laufwerk mit bisschen Speicherplatz lägst.
NetDrive speichert bei Problem mit der Verbindung zum FTP die Dateien zwischen im Cache der bei großen Dateien sich entsprechend aufpumpt.

Gruß
IngChris
IngChris 14.06.2012, aktualisiert am 21.06.2012 um 15:37:58 Uhr
Goto Top
Aufgabe:

Excel-Tabelle beim Schliessen/speichern von Excel autom. per FTP auf unserer Website aktualisieren


Die - nachfolgend beschriebene - in Excel eingebaute Variante funktioniert NICHT:

- Excel Tabelle - Bereich markieren
- Datei speichern unter --> entpr. FTP-Pfad auswählen, Dateityp: Webseite, die Option "Auswahl: Tabelle" auswählen
- Speichern
- Username/PW eingeben

Weiter ... und Excel "hängt" - Sanduhr läuft - nach einiger Zeit --> Excel: "keine Rückmeldung"
Kann nur über Taskmanager abgebrochen werden!


Das funktioniert jetzt nachdem in der Windowsfirewall testweise Regeln für FTP zulassen (Port 20, 21) ergänzt wurden.


EIN PROBLEM IST NOCH DA:

Obwohl ausgewählt, dass die entspr. Datei auf dem Netzlaufwerk (Webspace/Homepage) immer
autom. beim speichern aktualisiert werden soll, wird jedesmal die EINGABE des PASSWORTES gefordert.

Kennt jemand eine Möglichkeit, wie man u.U. in Excel einstellen kann, dass man hier NICHT
immer das Passwort eingeben muss?? - bei Speichern soll einfach die aktuelle Datei auf den WebSpace geladen werden, OHNE zusätzl. Passworteingabe!!!


Vielen Dank
IngChris
IngChris 21.06.2012 aktualisiert um 15:39:32 Uhr
Goto Top
Zitat von @IngChris:



EIN PROBLEM IST NOCH DA:

Obwohl ausgewählt, dass die entspr. Datei auf dem Netzlaufwerk (Webspace/Homepage) immer
autom. beim speichern aktualisiert werden soll, wird jedesmal die EINGABE des PASSWORTES gefordert.

Kennt jemand eine Möglichkeit, wie man u.U. in Excel einstellen kann, dass man hier NICHT
immer das Passwort eingeben muss?? - bei Speichern soll einfach die aktuelle Datei auf den WebSpace geladen werden, OHNE
zusätzl. Passworteingabe!!!


Vielen Dank



Ist dieses Problem wirklich so exotisch ?
(Hoffe zumind., dass ich meine Frage so formuliert habe, dass die Problematik von den Threadteilnehmern verstanden wurde - falls nicht, bitte auch melden!)


Kann man vielleicht in einer (Excel)-Gruppenrichtlinie festlegen, dass man beim Speichern (und Veröffentlichen - entspricht ja FTP-Upload) der Excel-Datei NICHT
IMMER das Kennwort neu eingeben muss.

Muss doch bitte eine Möglichkeit geben, wo man Benutzername / Kennwort für diese Excel-Funktion ("Veröffentlichen") hinterlegen kann.
"Veröffentlichen" ist ja immerhin ein Funktion die von Excel 2010 angeboten wird.

PS: Wenn ich eine Datei von meinem Server von einem beliebigen Ordner per Drag & Drop in den entspr. Ordner auf dem Netzlaufwerk (Webspace/Homepage) ziehe wird KEIN Benutzer und KEIN Kennwort verlangt (entspricht ja aber auch einem FTP-Upload)
Hierzu ist es nicht mal erforderlich, dass in der Windows-Firewall FTP erlaubt ist (Port 20, 21).

Die Kennwortabfrage erfolgt IMMER nur dann wenn aus Excel beim Speichern "veröffentlicht" werden soll.
nikoatit
nikoatit 21.06.2012 aktualisiert um 15:57:48 Uhr
Goto Top
Kannst es über ein externes Programm ja Mal versuchen: CodeTwo AutoLogon
Ich habe gute Erfahrungen damit.

Gruß
IngChris
IngChris 21.06.2012 um 16:11:58 Uhr
Goto Top
Zitat von @nikoatit:
Kannst es über ein externes Programm ja Mal versuchen: CodeTwo AutoLogon
Ich habe gute Erfahrungen damit.

Gruß

Vielen Dank für die rasche Antwort.

Eine Excel-Datei im Web zu veröffentlichen ist eine Funktion die von Excel 2010 unterstützt wird.
Es MUSS eine "Onboard"-Lösung (Server 2008 R2, Excel 2010, GPO oder was immer hierfür zuständig ist) für diesen Anwendungsfall geben - ich kann ja nicht der einzige sein, der ein Excel-Dokument im Web veröffentlichen will.

- Ich muss mich am Server (bei Anmelden/Neustart) mit Benutzername/Kennwort einloggen.
- das Anwählen an den Terminalserver erfordert Benutzername/Kennwort
damit brauche ich schon 2x Zugangsdaten bevor ich überhaupt mit Excel arbeiten kann

- beim Einrichten des "Veröffentlichen" unter Excel habe ich Benutzername/Kennwort (FTP) angegeben --> das muss irgendwie hinterlegt werden können - aber wie??

Es kann doch nicht sein, dass ich jetzt wieder ein eigenes Programm installieren muss, dass es funktioniert, so wie ich es erwarte!!

LG
IngChris
IngChris 23.06.2012 um 16:31:11 Uhr
Goto Top
Muss wirklich niemand eine Excel 2010 -TB per FTP veröffentlichen bzw. auf einer Webseite anzeigen?

Hat diese Funktion ausser mir niemand in Verwendung ?? Bin ich der einzige ?
nikoatit
nikoatit 24.06.2012 um 11:15:02 Uhr
Goto Top
Naja...Wenn ich das machen würde, dann speicher ich mir lieber immer nur das Dokument auf ein Laufwerk und konfiguriere dafür z.B. SynBackSE, dass es mir die Datei dann automatisch hochläd...
Aber von Excel als FTP-Programm habe ich noch nichts gehört und muss ich nicht haben face-wink
IngChris
IngChris 24.06.2012 um 21:53:50 Uhr
Goto Top
@nikoatit:

Vielen Dank für Deine Geduld!!
Bitte nicht missverstehen, wenn ich nicht unbedingt ein zusätzliches Programm installieren möchte, aber ....


...es funktioniert ja soweit alles bis auf´s "Hinterlegen" des Kennworts.


Nochmals in der Zusammenfassung:

Ich möchte auf unserer Website autom. eine Excel-Tabelle aktualisieren, sobald diese in Excel geändert/gespeichert wurde.

1. Zu diesem Zweck wurde ein Netzlaufwerk erstellt - dieses ist über den entspr. FTP-Pfad (mit Username+Kennwort) mit der Website verbunden (eine Funktion die von Windows standardmäßig unterstützt wird, zumind. WIN 7 bzw. Server 2008 R2)

2. In einem der Ordner auf der Website ist die entspr. Excel-Tabelle gespeichert.

3. In Excel 2010 kann man eine Einstellung vornehmen, dass beim Speichern die Tabelle automatisch veröffentlicht/aktualisiert wird

- Excel Tabelle - Bereich markieren
- Datei speichern unter --> entpr. FTP-Pfad auswählen (Netzlaufwerk/FTP-Pfad), Dateityp: Webseite, die Option "Auswahl: Tabelle" auswählen
- Speichern
- Username/PW eingeben
- "Häkchen" setzen, dass immer beim Speichern autom. aktualisiert wird (-->Netzlaufwerk --> entspr. ja quasi einem FTP-Upload)

4. Wenn das in Excel soweit eingerichtet ist, kann man
- die Tabelle in Excel öffnen
- eine Änderung vornehmen
- Speichern
- jetzt kommt ein Dialogfeld - der Username ist bereits eingetragen(wie eingerichtet)
das Kennwort muss (lästigerweise) IMMER wieder eingegeben werden (bei Eingabe erfolgt natürlich die korrekte Veröffentlichung/Aktualisierung)

Das ist der Punkt:
Es muss eine Möglichkeit in Excel, in einer Gruppenrichtlinie o.ä geben, wo man festlegt, dass das "eingerichtete" Kennwort verwendet wird und NICHT immer neu eingegeben werden muss, sobald man in Excel auf Speichern klickt
(Beim Einrichten dieser "Veröffentlichen"-Funktion wird Username/Kennwort ja bereits eingegeben).


Detail am Rande:
Ich kann z.B im Win Explorer aus einem beliebigen Ordner per Drag&drop eine Datei in den entspr. Ordner auf der Website (Netzlaufwerk) kopieren - hier werde ich gar NICHT nach Username/Kennwort gefragt.

LG
IngChris
IngChris 24.06.2012 um 22:00:04 Uhr
Goto Top
Das Thema scheint zumindest zu interessieren - immerhin über 400 Aufrufe in knapp 2 Wochen.

Könnte jemand von den stillen MitleserInnen mal einen Kommentar abgeben, ob sie/er die Funktion auch benötigt oder es auch schon probiert hat ..........
murdge
murdge 03.12.2017 um 16:51:58 Uhr
Goto Top
Das hier funktioniert.

'Open the Internet object  
 Private Declare PtrSafe Function InternetOpen _
   Lib "wininet.dll" _  
     Alias "InternetOpenA" _  
       (ByVal sAgent As String, _
        ByVal lAccessType As LongPtr, _
        ByVal sProxyName As String, _
        ByVal sProxyBypass As String, _
        ByVal lFlags As LongPtr) As Long
 
'Connect to the network  
 Private Declare PtrSafe Function InternetConnect _
   Lib "wininet.dll" _  
     Alias "InternetConnectA" _  
       (ByVal hInternetSession As LongPtr, _
        ByVal sServerName As String, _
        ByVal nServerPort As Integer, _
        ByVal sUsername As String, _
        ByVal sPassword As String, _
        ByVal lService As LongPtr, _
        ByVal lFlags As LongPtr, _
        ByVal lContext As Long) As Long
 
'Get a file using FTP  
 Private Declare PtrSafe Function FtpGetFile _
   Lib "wininet.dll" _  
     Alias "FtpGetFileA" _  
       (ByVal hFtpSession As LongPtr, _
        ByVal lpszRemoteFile As String, _
        ByVal lpszNewFile As String, _
        ByVal fFailIfExists As Boolean, _
        ByVal dwFlagsAndAttributes As LongPtr, _
        ByVal dwFlags As LongPtr, _
        ByVal dwContext As LongPtr) As Boolean
 
'Send a file using FTP  
 Private Declare PtrSafe Function FtpPutFile _
   Lib "wininet.dll" _  
     Alias "FtpPutFileA" _  
       (ByVal hFtpSession As LongPtr, _
        ByVal lpszLocalFile As String, _
        ByVal lpszRemoteFile As String, _
        ByVal dwFlags As LongPtr, _
        ByVal dwContext As LongPtr) As Boolean
 
'Close the Internet object  
 Private Declare PtrSafe Function InternetCloseHandle _
   Lib "wininet.dll" _  
     (ByVal hInet As LongPtr) As Integer
 
Sub UploadFTP()
 
Dim pdfName As String
Dim pdfOpenAfterPublish As Boolean
Dim olApp As Object
Dim olOldBody As String
Dim hostFile As String
Dim INet As Long
Dim INetConn As Long
Dim Password As String
Dim RetVal As Long
Dim ServerName As String
Dim Success As Long
Dim UserName As String
  
Const ASCII_TRANSFER = 1
Const BINARY_TRANSFER = 2

'Rückfragen, ob Datei nach dem Erstellen geöffnet werden soll  
If MsgBox("Soll die PDF-Datei nach dem Erstellen angezeigt werden?", vbYesNo, "PDF anzeigen?") = vbYes Then pdfOpenAfterPublish = True  

'Pfad und Name der PDF-Datei  
pdfName = ThisWorkbook.Path & "\" & ThisWorkbook.Name & "_" & ActiveSheet.Name & ".pdf"  

'PDF-Datei erstellen. Funktioniert nur in Excel 2007 oder höher, nicht in Excel 2003 oder älter  
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
                                   Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
                                   OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
                                              
'Boolean-Variable "pdfOpenAfterPublish" zurücksetzen  
pdfOpenAfterPublish = False
 
'Ftp Daten bitte ändern  
ServerName = "dein.ftp.de"  
UserName = "Dein_Benutzer_Name"  
Password = "Dein_Passwort"  

'localFile lassen, hostFile "/Test/" an Serververzeichnis anpassen (Verzeichnis muss auf dem Server existieren!)  
'Zeigt der Ftp-Zugang direkt auf das Verzweichnis dann: hostFile = ThisWorkbook.Name & "_" & ActiveSheet.Name & ".pdf"  
localFile = pdfName
hostFile = "/Test/" & ThisWorkbook.Name & "_" & ActiveSheet.Name & ".pdf"  
 
      RetVal = False
      INet = InternetOpen("MyFTP Control", 1&, vbNullString, vbNullString, 0&)  
        If INet > 0 Then
          INetConn = InternetConnect(INet, ServerName, 0&, UserName, Password, 1&, 0&, 0&)
            If INetConn > 0 Then
              'Abfrage kann ausgeblendet werden mit 'If MsgBox.. und beim nächsten 'End If  
              If MsgBox("Soll die PDF-Datei auf den Server geladen werden?" & vbCrLf & "Gleichnamige Dateien werden überschrieben!", vbYesNo, "PDF hochladen?") = vbYes Then  
                Success = FtpPutFile(INetConn, localFile, hostFile, BINARY_TRANSFER, 0&)
                RetVal = InternetCloseHandle(INetConn)
              End If
            End If
         RetVal = InternetCloseHandle(INet)
        End If
 
      If Success <> 0 Then
        MsgBox ("Upload erfolgreich beendet!")  
      Else
        MsgBox "Abbruch durch Benutzer oder FTP Server/ Datei Fehler!"  
      End If
 
End Sub

Es wird eine Pdf_Datei aus dem aktiven Sheet und dem festgelegten Druckbereich erstell, im selben Verzeichnis wie die Excel-Datei gespeichert und dann per Ftp auf das angegebene Verzeichnis geladen.

Bei Fehlern:
Firewall für Excel freigeben
FTP Verzeichnis prüfen

Mfg, murdge
murdge
murdge 03.12.2017 um 16:53:39 Uhr
Goto Top
Funktioniert in Win x86 und x64
IngChris
IngChris 06.12.2017 um 09:13:00 Uhr
Goto Top
Hey Danke,
Ist ja mittlerweile 5 Jahre her und hat sich erledigt, war überrascht als ich email von Administrator.de bekam...

Aber ich denke, dem einen oder anderen wird´s sicher helfen. Super.
Vielen DANK!!!
lg
murdge
murdge 06.12.2017 um 10:10:00 Uhr
Goto Top
Ist ja in den neuen Office Versionen wieder aktuell da nur noch Export über Ftp in die Cloud. Ein Nachbar hatte mich danach gefragt. Da habe ich den Code geschrieben. Hat sich dann nicht mehr gemeldet - so hab ich den halt hier hochgeladen.
Deine Frage war ja eigentlich zu Html. Das von Excel generierte ist ja irrsinnig aufgeblasen und Heutzutage wirklich nicht groß zu verwenden.
Aber mann kann auch das mit eigener Kontrolle erledigen z. Bsp.:

Sub Test()
    'Range festlegen  
    RangeToHtml Range("A1:C3"), "test.html"  
End Sub
 
Sub RangeToHtml(rng As Range, fileName As String)
    Dim resBeg As String
    'Hier eigenes Html, also auch responsive möglich  
    resBeg = "<html><head></head><body><table>"  
    resEnd = "</table></body></html>"  
    For i = 1 To rng.Rows.Count
        '---Rows---  
        resBeg = resBeg & "<tr>"  
        For j = 1 To rng.Columns.Count
            '---Columns---  
            resBeg = resBeg & "<td>"  
            resBeg = resBeg & rng.Cells(i, j).Value
            resBeg = resBeg & "</td>"  
        Next j
        resBeg = resBeg & "</tr>"  
    Next i
    Call SaveStringToFile(resBeg & resEnd, fileName)
End Sub
 
Sub SaveStringToFile(str As String, fileName As String)
    Open fileName For Output As #1
    Print #1, str
    Close #1
End Sub

lg, murdge