Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro per aprire un file html e salvarlo in txt

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 07/01/14 14:30

Ciao a tutti,
in una cartella - poniamo C:\Desktop\PIPPO - ho numerosi file .html che dovrei convertire in .txt

Di solito uso un convertitore (HtmlAsText) ma, in questo caso, quelli che sono mail e web li trasforma in caratteri del tipo10%30%20%60% e quindi inutilizzabili.
Ho provato a creare un file .bat ma anche questo fa la conversione brutale e mi da lo stesso risultato di sopra.

Quindi dovrei creare una macro in Excel che:
- mi faccia aprire ogni singolo file .html
- me lo faccia salvare in formato testo (DOS)
- Chiuda il file


Vi ringrazio anticipatamente.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Sponsor
 

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 07/01/14 20:29

Un file html e' gia' scritto in plain text; quindi basta rinominare il file, cosa che fa questa macro:
Codice: Seleziona tutto
Sub htmltotxt()
Dim myDir As String, myF As String
'
myDir = "C:\Users\UTENTE\Desktop\DA_PC-FACILE\PIPPO_TEMP\"   '<<<
myF = Dir(myDir & "*.html")
'
Do While myF <> ""
    Name myDir & myF As myDir & Replace(myF, ".html", ".txt")
    myF = Dir
Loop
End Sub

Metti nell' istruzione marcata <<< la tua directory, CON lo slash finale.

Opportuno, prima di provare, fare una copia di backup dell' intera directory...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 07/01/14 22:46

Ciao Anthony,
ti ringrazio per la sollecita risposta.

Ho provato la macro che mi hai suggerito ma come risultato mi da lo stesso del .bat che avevo fatto io.

Ho preso un file a caso da internet che posto qui http://we.tl/sOBjIybvEO
Ci sono anche due versioni di file .txt una non corretta (derivata dalla macro) ed una corretta ottenuta con l'apertura del file .html in Excel e salvato in formato testo.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 08/01/14 00:41

I file pubblicati consentono di capire meglio la tua richiesta: tu vuoi estrarre dai file html il solo contenuto testuale; cioe' estrarre da pagine html il loro "innertext".
Si puo' fare usando le prestazioni della libreria mshtml.tlb (html object library), ma la cosa migliore e' farlo in modo mirato; per questo ti chiedo quali info tra quelle presenti nella pagina ti interessa estrarre; e se ti interessa creare tanti file txt, o un unico file txt, oppure un elenco excel.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 08/01/14 09:51

Ciao Antony,
la pagina html postata era un mero esempio.

Di quelle che ho tutti i dati presenti mi interessano. Diciamo che nelle pagine sono presenti magari dei foooter che posso tranquillamente eliminare con una macro o brutalmente anche con un "trova" e "sostituisci".

I file possono essere tranquillamente tanti quanti sono quelli in origine in quanto verranno archiviati singolarmente.
Se dovessi avere la necessità di unirli in uno ho già pronto un .bat che all'occorrenza unisce in un unico file.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 08/01/14 15:12

Mi preoccupa quel "tutti i dati presenti", perche' ogni pagina web ha il suo layout e automatizzare l' estrazione di qualsiasi cavolata ci sia scritta, in qualsiasi formato e in qualsiasi stile di pagina e' da ottimisti...
Comunque al momento, cambiando approccio, suggerisco di usare una web query:
-in un foglio vuoto di un tuo file inserisci in A1 una web query che estragga i dati da una delle pagine di http://www.trova-dentisti.it
-poi inserisci questa macro in un modulo standard del vba:
Codice: Seleziona tutto
Sub htmltotxt()
Dim myDir As String, myF As String
'
Close #1
myDir = "C:\Users\USER\Desktop\PIPPO_TEMP\"   '<<<< La Tua dir, completa di "\" finale
myF = Dir(myDir & "*.html")
'
Do While myF <> ""
    Cells.Clear
    ActiveSheet.UsedRange
    With Range("A1").QueryTable
        .Connection = "URL;file:///" & myDir & myF
        .Refresh BackgroundQuery:=False
    End With
    Open myDir & Replace(myF, ".html", ".txt") For Output As #1
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        Print #1, Cells(i, 1)
    Next i
    Close #1
'
    myF = Dir
Loop
End Sub

Torna su excel, sul foglio con la web query, e lancia la macro. Sulle pagine del sito di cui parli questo metodo e' idoneo.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 08/01/14 17:46

Un amico mi ha chiesto una mano per fare data entry.
La sua azienda anni fa passò tutti i dati su web (era troppo facile avere una intranet): ogni documento veniva scritto direttamente su web.

Quindi lui si è trovato un'anagrafica con dati del tipo: nome, cognome azienda, modalità di contatto, chiamato il giorno, ecc.
Quindi con "tutti dati presenti" intendo una vartietà di appunti che a loro servono magari come nota...non come dati salienti.

Ora provo la macro.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 09/01/14 10:35

Devo avere fatto un po' di confusione perchè mi si apre una finestra con errore 400.
Purtroppo sono terra terra e non capisco cosa intendi con una web query che estragga i dati: intendo un comando che vada a ricercare determinate parole nel documento .html?
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 09/01/14 12:19

Quanto ti ho suggerito presuppone che i file html siano file apribili da un normale browser; se invece sono solo dei monconi di sorgenti di pagine web allora non funzionera'.
Quindi dimmi che cosa succede quando provi ad aprire con InternetExplorer uno dei tuoi file.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 09/01/14 12:42

Prendendo il file che avevo postato come esempio: lo prendo, lo strscino o su IE o su Mozzilla e la pagina appare formattata correttamente.
Le mail sono presenti, i testi sono ok.
L'unico elemento a non essere presente/caricato sono le immagini (sostituite con X).

Ma nel mio caso le immagini non sono assolutament importanti in quanto cornicette o simili che non sono dati di interesse.

Riporto in versione web l'esempio precedentemente usato: http://we.tl/kklgJeXUo1
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 09/01/14 14:59

Allora la proposta che avevo fatto dovrebbe funzionare.
Fai cosi:
-parti di un file nuovo
-manda in esecuzione una sola volta questa macro avendo selezionato Foglio1
Codice: Seleziona tutto
Sub UnaTant()
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.andi.it", _
    Destination:=Range("$A$1"))
    .Name = "www.andi.it"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
End Sub
In questo modo avrai impostato una web query idonea per il processo successivo; i dati che la query mette sul foglio non sono importanti.
A questo punto aggiungi la macro precedentemente pubblicata; personalizza la stringa
Codice: Seleziona tutto
myDir = "C:\Users\USER\Desktop\PIPPO_TEMP\"   '<<<< La Tua dir, completa di "\" finale
Nota: inserisci la directory dei file html, "completa di "\" finale"
Mandala in esecuzione.
Dovrebbe fare una query a ognuno dei file html presenti, e per ognuno sara' creato un equivalente file .txt.

Se compare qualche errore fai uno screenshot e pubblicalo (vedi viewtopic.php?f=26&t=80395#p466013); indica anche quale riga del codice va in errore.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 09/01/14 16:24

Se ho ben capito, la macro che hai postato qui sopra serve come base per creare il file "prototipo" per definire una range di operazioni:
è una stringa di "connessione" richiesta in VBA (essendo file che arrivano dallo stesso url (che avevo cercato di fare partendo da qui viewtopic.php?t=75763#p430098).

Quello a cui non sarei mai arrivato era Add(Connection:="URL;http://www.andi.it", _ in quanto avevo ipotizzato che la soluzione fosse così:
Codice: Seleziona tutto
 With ActiveSheet.QueryTables.Add(Connection:= _
        "HTML;C:\Users\prova\PIPPO\elenco.html", Destination:=Range( _     '<<<<<path del file di testo
        "$A$1"))
        .Name = "elenco"


Giusto per cercare di capire, mi potresti spiegare questo passaggio:
(Connection:="URL;http://www.andi.it", _

Nel senso che non ci arrivo: non riesco a capire se sia fittizio, o se seleziona file ipoteticamente provenienti dalla stessa fonte avendo lo stesso URL

Ora faccio la prova della macro...
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 09/01/14 23:57

Hai afferrato correttamente che la Sub UnaTant serve a impostare una web query di partenza, il suo risultato non ci interessa (ma ci interessano le impostazioni); ho usato il sito andi.it perche' da quel sito risulta estratto il file che hai pubblicato e quindi sarebbe stato piu' difficile sbagliare le impostazioni.
La Sub htmltotxt colleghera' poi, uno dopo l' altro, i vari file html alla query (di cui andra' a modificare la Connection) per estrarne i contenuti testuali da salvare su file txt.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 10/01/14 12:11

Ho provato la macro con altri 3/4 documenti presi come esempio dallo stesso sito (che ho copiato e rinominato fino ad arrivare ad una quarantina di documenti).

Funziona meravigliosamente (non avevo dubbi).

Quindi, in questo caso, essendo preso come esempio dal sito ANDI hai impostato così la query di partenza. Ragion per cui, per i miei imposterò così il codice:

Codice: Seleziona tutto
With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.mio_sito_di_origine_dati.it", _


Grazie molte.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46

Re: Macro per aprire un file html e salvarlo in txt

Postdi Anthony47 » 10/01/14 15:50

La modifica della Connection non influenza l' estrazione dei dati.
Tuttavia l' approccio usato importera' correttamente solo da siti dove la struttura dei dati e' di tipo lineare come nel caso del sito andi.it.
Per siti che usano tabelle o frames certamente l' estrazione sara' parziale.

Se mi dai un paio di url da cui gli html sono estratti si puo' approfondire.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per aprire un file html e salvarlo in txt

Postdi Gattuccio0 » 10/01/14 16:33

Nessun problema Anthony.
I dati che devo estrarre hanno la struttura come quella da me indicata molto lineare.
Gattuccio0
Utente Senior
 
Post: 176
Iscritto il: 22/06/09 12:46


Torna a Applicazioni Office Windows


Topic correlati a "Macro per aprire un file html e salvarlo in txt":


Chi c’è in linea

Visitano il forum: patel e 46 ospiti