Visualizzazione dei risultati da 1 a 5 su 5

Discussione: leggere file html

  1. #1

    leggere file html

    Salve a tutti,

    Ho necessità di leggere da dentro un foglio excel ( da una cella esattamente) il contenuto di un file esterno su web. E' un file html e devo leggerne il codice e scriverlo in detta cella.
    Mi è sembrato di capire che si possa fare in VBA?

    Qualcuno può mettermi nella direzione giusta?

    Grazie e saluti

  2. #2
    Puoi scaricare il file in un file temporaneo tramite la API UrlDownloadToFile e poi leggerlo tramite le consuete funzioni di lettura file di VBA.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Grazie, immaginavo qualcosa del genere.

    Ti andrebbe di spiegare passo passo la procedura esatta? VBA mi è sconosciuto e non ho mai usato macro in excel.

    Ho una lista di prodotti in excel tipo database e in una colonna devo inserire il codice html letto da una pagina html in remoto (che altro non è che la descrizione del prodotto).
    Grazie

  4. #4
    codice:
    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()
        Dim tempFileName As String, fileId As Integer
        tempFileName = GetTempFile()
        DownloadURL "http://www.mitalia.net/irfanpaint/downcount.txt", tempFileName
        fileId = FreeFile()
        Open tempFileName For Binary As fileId
        MsgBox Input$(LOF(fileId), fileId)
        Close fileId
        Kill tempFileName
    End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Dimenticavo, al posto di
    codice:
        MsgBox Input$(LOF(fileId), fileId)
    metti
    codice:
    ActiveCell.Value = Input$(LOF(fileId), fileId)
    ; al posto di ActiveCell ovviamente puoi mettere una qualunque espressione di tipo Range che rappresenti una cella.
    Allo stesso modo al posto di
    codice:
    http://www.mitalia.net/irfanpaint/downcount.txt
    metti l'indirizzo del file da scaricare.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.