Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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

Filedownload von Server geht nicht mehr

Filedownload von Server geht nicht mehr
05.11.2019 16:53:38
Server
Hallo an Alle,
seit langer Zeit nutze ich in einigen meiner Makros die Möglichkeit, Files von Servern herunter _ zu laden und ins Excel zu importieren. Bisher hat das mit

Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long _
) As Long

und dem Aufruf

Private Sub DownloadLogfilesFromServer()
vSourceFileGt = "http://xxx.xxx/static/igator_files/kwanm.csv"
vLogFileGtName = "kwanm.csv"
vWorkDir = ThisWorkbook.Path
' GT Basisdaten
vDestinationFile = vWorkDir + "/" + vLogFileGtName
' alte Datei loeschen, wenn vorhanden
If Dir(vDestinationFile)  "" Then
Kill vDestinationFile
End If
' Download starten und autom. URL-Cache leeren
a = FileDownload(vSourceFileGt, vDestinationFile)
End Sub
Private Function FileDownload(ByVal sURL As String, ByVal sLocalFile As String, Optional ByVal   _
bClearCache As Boolean = True) As Boolean
' Download ausführen
vResult = URLDownloadToFile(0, sURL, sLocalFile, 0, 0)
FileDownload = (vResult = 0)
End Function
ganz gut funktioniert. Nunmehr schwenkte meine Verwaltung auf Windows 10 um und es geht eben nicht mehr. Der File-Download wird mit false quittiert. Und ja: das File liegt an dem angegebenen Platz.
Hat jemand eine Idee, woran es liegt, dass jahrelang Bewährtes nicht mehr funkt?
Vielen Dank!
Mark

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filedownload von Server geht nicht mehr
05.11.2019 21:25:17
Server
Hallo Mark,
schreibe in allen Modulen oben immer Option Explicit hin. Damit wirst Du gezwungen Variablen zu deklarieren. Weißt Du mit Deinem VBA Lvl wahrscheinlich, aber Du hast es nicht verwendet.
Die FileDownload() Funktion kannst Du Dir komplett sparen. Zumal sie immer zurückgibt, dass der Download erfolgreich war und Du den dritten Funktionsparameter bClearCache auch gar nicht verwendest.
Auch das Prüfen auf eine schon vorhandene Datei und das evtl. Löschen kannst Du weglassen. URLDownloadToFile() überschreibt eine vorhandene Datei sowieso ohne Rückfrage.
Im folgenden habe ich es Dir so geschrieben, dass das Makro unter Excel 32 Bit und 64 Bit läuft.
Ungetestet:

Option Explicit

#If Win64 Then
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA"  _
_
(ByVal pCaller As LongPtr, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As LongPtr, _
ByVal lpfnCB As LongPtr) As Long
#Else
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
#End If

Private Sub DownloadLogfilesFromServer()
Dim vSourceFileGt As String
Dim vLogFileGtName As String
Dim vWorkDir As String
Dim vDestinationFile As String
Dim a As Long
vSourceFileGt = "http://xxx.xxx/static/igator_files/kwanm.csv"
vLogFileGtName = "kwanm.csv"
vWorkDir = ThisWorkbook.Path & "/"
'GT Basisdaten
vDestinationFile = vWorkDir & vLogFileGtName
'Download
a = URLDownloadToFile(0, vSourceFileGt, vDestinationFile, 0, 0)
'Prüfen ob Download erfolgreich
If a = 0 Then
MsgBox "Datei wurde runtergeladen"
Else
MsgBox "Download fehlgeschlagen"
End If
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Filedownload von Server geht nicht mehr
06.11.2019 09:51:05
Server
Hallo,
danke für den Hinweis und den "Gegenvorschlag". Leider bringt der den gleichen Fehler (bei mir).
Übrigens hatte ich gestern nur eine abgespeckte Version des Codes gepostet - das Löschen des URL-Caches ist wesentlich und wurde auch genutzt.
Hier mal die anonymisierte und anhand Deiner Hinweise korrigierte Version meiner Datei (https://www.herber.de/bbs/user/132966.xlsm). Die im Code hinterlegte Quell-URL für das Download-File ist public, kann also auch von anderen abgerufen werden. Das File an sich enthält nur Musterdaten!
Kann bitte geprüft werden, ob der Download bei Euch ebenso nicht erfolgt? Wenn ja: warum und wie kann ich das beheben?
Danke im Voraus!
Mark
Anzeige
AW: Filedownload von Server geht nicht mehr
06.11.2019 10:25:37
Server
Da, vorhin nicht korrekt eingebunden, jetzt richtig verlinkt:
meine Test-Datei
Mark
AW: Filedownload von Server geht nicht mehr
06.11.2019 10:29:53
Server
Hallo Mark,
sehr eigenwilliger Programmierstil ;-) Aber bei mir läuft es. Allerdings mit Excel 2016. Welche Version hast Du denn genau?
Viele Grüße,
Zwenn
AW: Filedownload von Server geht nicht mehr
06.11.2019 14:25:12
Server
Vielen Dank für die Gegenprobe. Da weiß ich erstmal, dass kein übler Programmierfehler vorliegt. Über den Programmierstil lasse ich mich gern belehren. Ich habe es mir autodidaktisch eben so angewöhnt. Da ich den Code i.d.R. nur selbst bearbeite/lesen muss, passt es für mich und ich finde mich zurecht (meist) ;-)
Wir nutzen hier in der Verwaltung noch das 2010er Office. Das 2016er wird in Bälde ausgerollt. Ich lasse in der IT mal gegenprüfen, ob das Makro im 2016er Office und unseren Gegebenheiten läuft. Ich vermute, dass es an der Windowsumgebung liegt und bilde mir ein, vor Kurzem erst etwas gelesen zu haben über Probleme mit dem temporären Download-Verzeichnis, welches die Funktion anspricht, was aber im Windows 10 ggf. woanders liegt/irgendwie verdreht ist. Da muss ich Tante Google nochmal bemühen.
Wie auch immer: Danke für die Hilfe!
Mark
Anzeige
AW: Filedownload von Server geht nicht mehr
06.11.2019 14:46:26
Server
Hallo Mark,
mit Excel 2010 kann ich es am Abend zu Hause testen. Da habe ich noch einen Rechner mit Windows 10 und Excel 2010 stehen. Der freut sich, wenn ich ihn mal wieder einschalte.
Viele Grüße,
Zwenn
AW: Filedownload von Server geht nicht mehr
06.11.2019 16:06:14
Server
Zum Nachtrag:
Der von mir erwähnte Artikel ist hier zu finden. Allerdings habe ich durch die darin beschriebene "Lösung" bei mir keine Änderung erreichen können.
AW: Filedownload von Server geht nicht mehr
10.11.2019 19:52:19
Server
Hallo Mark,
ich habe Deinen Code mal zusammengefasst und die globalen Variablen rausgeschmissen. Die Variablen für den Dateinamen und das Zusamensetzen des Pfades habe ich so gelassen, weil ich nicht weiß, ob Du die vielleicht noch anders verwenden willst.
Also bei mir läuft das Ganze unter Windows 10 sowohl mit Excel 2016, wie auch mit Excel 2010:
Option Explicit

' Benötigte API - Funktionen
#If Win64 Then
'Excel 64 Bit
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As LongPtr, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As LongPtr, _
ByVal lpfnCB As LongPtr) As Long
Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet.dll" _
Alias "DeleteUrlCacheEntryA" ( _
ByVal lpszUrlName As String) As Long
#Else
'Excel 32 Bit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" _
Alias "DeleteUrlCacheEntryA" ( _
ByVal lpszUrlName As String) As Long
#End If

Public Sub Main()
Dim vWorkDir As String
Dim vLogFileGtName As String
Dim vSourceFileGt As String
Dim vDestinationFile As String
Dim vResult As Long
vSourceFileGt = "https://extranet.stadt-chemnitz.de/static/downloadtest/kwanm2.csv"
vLogFileGtName = "kwanm2.csv"
vWorkDir = ThisWorkbook.Path
vDestinationFile = vWorkDir & "\" & vLogFileGtName
'Datei ändert sich ständig; Sicher stellen, dass aktuelle Version geladen wird
'URL-Cache leeren
vResult = DeleteUrlCacheEntry(vSourceFileGt)
'Laedt Logfile vom Server herunter und speichert dieses ins Arbeitsverzeichnis des Makros
vResult = URLDownloadToFile(0, vSourceFileGt, vDestinationFile, 0, 0)
'Datenbereich loeschen
Sheets("Basisdaten").Activate
Range("A1:P5000").Clear
'Importiert Basisdatenfile
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" + vWorkDir + "\" + vLogFileGtName,  _
Destination:=Range("$A$1"))
.Name = "intergator_memory_usage"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ";"
.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Viele Grüße,
Zwenn
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige