tramite questa macro scarico l'html di una pagina web che contiene i dati statistici che mi interessano:
- Codice: Seleziona tutto
Option Explicit
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 GetTempFileName Lib "Kernel32" Alias _
"GetTempFileNameA" (ByVal lpszPath As String, _
ByVal lpPrefixString As String, ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib "Kernel32" Alias "GetTempPathA" (ByVal _
nBufferLength As Long, ByVal lpBuffer As String) As Long
' Creates a temporary (0 byte) file in the \TEMP directory
' and returns its name
Public Function GetTempFile(Optional Prefix As String) As String
Dim TempFile As String
Dim TempPath As String
Const MAX_PATH = 260
' get the path of the \TEMP directory
TempPath = Space$(MAX_PATH)
GetTempPath Len(TempPath), TempPath
' trim off characters in excess
TempPath = Left$(TempPath, InStr(TempPath & vbNullChar, vbNullChar) - 1)
' get the name of a temporary file in that path, with a given prefix
TempFile = Space$(MAX_PATH)
GetTempFileName TempPath, Prefix, 0, TempFile
GetTempFile = Left$(TempFile, InStr(TempFile & vbNullChar, vbNullChar) - 1)
End Function
Public Sub DownloadURL(ByVal URL As String, ByVal DestinationFile As String)
Dim ret As Long
ret = URLDownloadToFile(0, URL, DestinationFile, 0, 0)
If ret <> 0 Then
Err.Raise ret, "DownloadURL", "Impossibile scaricare l'URL """ & URL & """ in """ & DestinationFile & """." & vbCrLf & "Codice di errore di URLDownloadToFile: " & LTrim(CStr(ret)) & "."
End If
End Sub
Public Sub TuaMacro()
'Cells(4, 4).SetFocus
Dim dDd
dDd = Cells(1, 2).Value '"http://www.targatona.it/index.asp"
' ovviamente è un indirizzo di prova
MsgBox dDd
Dim tempFileName As String, fileId As Integer
tempFileName = GetTempFile()
DownloadURL dDd, tempFileName
fileId = FreeFile()
Open tempFileName For Binary As fileId
'ActiveCell.Value = Input$(LOF(fileId), fileId)
Cells(4, 4).Value = Input$(LOF(fileId), fileId)
Close fileId
Kill tempFileName
End Sub
Problema 1: La cella ha una limitazione di circa 32000 caratteri e l'thml della mia pagina ne ha oltre 64000 quindi viene tagliato e non posso utilizzare tutte le info che mi servo. Come posso risolvere questo inconveniente?
Problema 2: Visto che voi siete dei mostri in programmazione... gradirei consigli per raggiungere il mio obiettivo che è questo: scaricare i dati da una pagina web in una cella di excel, magari riuscissi ad incollare direttamente il testo e non l'html della pagina...
grazie a tutti!
ciao
Luciano