Newsgroup: it.comp.appl.access
Titolo: A2003: Importare Tabelle multiple HTML

Salve,
ho la necessità di importare delle tabelle da un file html.
All'interno del singolo file html ci sono tante tabelle e quindi, quando 
utilizzo il wizard per l'importazione, sono costretto a ripetere 
l'operazione tante volte quante tabelle ci sono nel file html.
Ce' la possibilità di importare tutte le tabella in una unica volta e, se 
esiste, qual'è ?
Grazie e a buon rendere.
Giorgio

 ha scritto nel messaggio news:HY8oi.2895$mV....@tornado.fastwebnet.it...

Prova a leggere qui:
http://groups.google.it/group/it.comp.appl.access/browse_thread/thread/c0c9c7dbbe85225e/86fc23a1a31f1f37?lnk=gst&q=parsing+html+mazza&rnum=1&hl=it#86fc23a1a31f1f37
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
'--> Microsoft Internet Controls
'--> Microsoft HTML Object Library
Tra i riferimenti trovo solo il secondo, il primo non lo riesco a trovare.
Forse devo istallare qualche software in particolare ?
Grazie intanto.
Giorgio 


Risolto puntando il file  Shdocvw.dll, (google rulez)
:P

 Sergio MAZZA
Ottimo, ora mi importa tutte le tabelle contemporaneamente.
Ho, però, 2 piccoli problemi:
a. alcuni caratteri non vengono interpretati bene in particolar modo quelli 
austriaci/tedeschi (ö, ü, )
b."l'intestazione" della tabella viene importata prima (ovviamente) del 
contenuto della stessa: nel primo campo di 2 righe precedente il set; è 
possibile che questo contenuto venga aggiunto alle righe inerenti il set 
stesso ?
mi spiego meglio, ora avviene:
--------------------
IintestazioneTabella1Html
Datainser
articolo 1
articolo 2
IntestazioneTabella2Html
DataInser
articolo X
articolo y
-------------------
io vorrei ciò:
IntestazioneTabella1Html
DataInser
Articolo1    IntestazioneTabella1Html
Articolo2    IntestazioneTabella1Html
IntestazioneTabella2Html
DataInser
Articolo X    IntestazioneTabella2Html
ArticoloY    IntestazioneTabella2Html
etc etc
ah, tutte iniziano con una stringa di 5 caratteri uguali, può essere l'uovo 
di colombo ?
Grazie ancora ^^

 Grazie ancora ^^
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Buongiorno,
per il codice ti incollo quello che sto usando, sempre firmato da te:
'------------------------------------------------------------------------------------
'-->
'--> inserisci i riferimenti a:
'--> Microsoft Internet Controls
'--> Microsoft HTML Object Library
'-->
On Error GoTo LeggiTabellaHTML_err
Dim oBrws As New SHDocVw.InternetExplorer
Dim oDoc As MSHTML.IHTMLDocument
Dim oTbl As Object 'MSHTML.IHTMLTable
Dim oTblRw As Object 'MSHTML.IHTMLTableRow
Dim oTblCll As Object 'MSHTML.IHTMLTableCell
oBrws.Navigate2 "c:\documenti\nomePagina.htm"
Do
If oBrws.readyState = READYSTATE_COMPLETE Then
Exit Do
End If
DoEvents
Loop
Set oDoc = oBrws.Document
Dim rst As New ADODB.Recordset
rst.Open "nometabella", CurrentProject.Connection, adOpenDynamic,
adLockOptimistic
For Each oTbl In oDoc.getElementsByTagName("TABLE")
'--> oppure: getElementsByID("id") / getElementsByName("name")
'--> per avere il numero delle righe della tabella: objTabella.rows.length
For Each oTblRw In oTbl.Rows
rst.AddNew '<-- aggiungo il record
a = 0
For Each oTblCll In oTblRw.Cells
'Debug.Print oTblCll.innerText
rst(a) = oTblCll.innerText '<-- scrivo il contenuto delle celle nei
campi
a = a + 1
Next oTblCll
rst.Update '<-- scrivo il record
Next oTblRw
Next oTbl
rst.Close
Set rst = Nothing
Set oTbl = Nothing
Set oTblRw = Nothing
Set oTblCll = Nothing
Set oDoc = Nothing
Exit Sub
LeggiTabellaHTML_err:
DoCmd.SetWarnings True
Set oTbl = Nothing
Set oTblRw = Nothing
Set oTblCll = Nothing
Set oDoc = Nothing
MsgBox "Errore: " & Application.AccessError(Err.Number) & vbCrLf &
"Riga: " & Erl & vbCrLf & "Numero: " & Err.Number
' ---------------------------------------------------------------------------------------
Con questo metodo mi importa le intestazioni delle tabellehtml su righe 
separate dal set di record, es:
IintestazioneTabella1Html
Datainser
articolo 1
articolo 2
IntestazioneTabella2Html
DataInser
articolo X
articolo y
io vorrei ottenere ciò (riportare il contenuto della intestazione in tutti i 
record del set relativo) :
IntestazioneTabella1Html
DataInser
Articolo1 IntestazioneTabella1Html
Articolo2 IntestazioneTabella1Html
IntestazioneTabella2Html
DataInser
Articolo X IntestazioneTabella2Html
ArticoloY IntestazioneTabella2Html
("IntestazioneTabbella1Html" è l'intestazione della prima tabella nel file 
HTML;
"IntestazioneTabella2Html" è l'intestazione della seconda tabella sempre 
dello stesso file html;
"IntestazioneTabella3Html" è l'intestazione della terza tabella sempre dello 
stesso file html )
etc .etc.
è possibile ottenere ciò anche tenendo conto che l'inizio del contenuto è 
sempre identico per tutte le tabelle dello stesso file html ?
Mi sono spiegato quasi come un libro stracciato eh... -.-
Ciao e grazie,
Giorgio 

 ha scritto nel messaggio 
news:Zf7pi.864$pd1...@tornado.fastwebnet.it...

Azz... Neanche a provarci eh?
Non mi serve il codice utilizzato ma la struttura della tabella html; 
perché, una cosa è leggere una tabella di 3 colonne, altro "paio di maniche" 
è leggerne una con delle celle unite (colspan)..
Ciao.
-- 
Sergio MAZZA 

 maniche" è leggerne una con delle celle unite (colspan)..
Salve Sergio,
spero ti riferisca a ciò:
---------------------------------------------
<tr class='eventtableheader'><td>Code</td><td>Descrizione</td><td 
align=center><nobr>1</nobr></td><td align=center><nobr>X</nobr></td><td 
align=center><nobr>2</nobr></td><td align=center><nobr>1X</nobr></td><td 
align=center><nobr>12</nobr></td><td align=center><nobr>X2</nobr></td><td 
align=center><nobr>Under</nobr></td><td 
align=center><nobr>Over</nobr></td><td align=center><nobr>GG</nobr></td><td 
align=center><nobr>NG</nobr></td></tr><tr class=whitebox><td 
class=whiteboxnormal>394</td>
<td class=whiteboxnormal><nobr>23/7/07 19:00  Brommapojkarna - 
Trelleborg</nobr></td>
<td>2.05</td><td>3.20</td><td>3.25</td><td>1.20</td><td>1.20</td><td>1.60</td><td>1.85</td><td>1.80</td><td>1.75</td><td>1.90</td></tr>
<tr class=whiteboxhighlight><td class=whiteboxHighlightNormal>393</td>
<td class=whiteboxHighlightNormal><nobr>23/7/07 19:00  Helsingborg - Aik 
Stockholm</nobr></td>
<td>1.85</td><td>3.25</td><td>3.85</td><td>1.15</td><td>1.30</td><td>1.75</td><td>1.75</td><td>1.90</td><td>1.75</td><td>1.90</td></tr>
</table><br><table cellspacing='1' cellpadding='0' border='0'>
<tr class='dkblueboxcentred'><td colspan=2>Calcio - SWE - Superettan</td><td 
colspan=3>Risult. 90'</td>
<td colspan=3>Dopp.Chance</td>
<td colspan=2>Under/Over 2.5</td>
<td colspan=2>GG/NG</td>
</tr>
<tr class='eventtableheader'><td>Code</td><td>Descrizione</td><td 
align=center><nobr>1</nobr></td><td align=center><nobr>X</nobr></td><td 
align=center><nobr>2</nobr></td><td align=center><nobr>1X</nobr></td><td 
align=center><nobr>12</nobr></td><td align=center><nobr>X2</nobr></td><td 
align=center><nobr>Under</nobr></td><td 
align=center><nobr>Over</nobr></td><td align=center><nobr>GG</nobr></td><td 
align=center><nobr>NG</nobr></td></tr><tr class=whitebox><td 
class=whiteboxnormal>8970</td>
<td class=whiteboxnormal><nobr>23/7/07 19:00  Bunkeflo If - Bk 
Häcken</nobr></td>
<td>2.67</td><td>3.23</td><td>2.32</td><td>1.45</td><td>1.25</td><td>1.35</td><td>1.92</td><td>1.68</td><td>1.69</td><td>1.91</td></tr>
<tr class=whiteboxhighlight><td class=whiteboxHighlightNormal>8922</td>
<td class=whiteboxHighlightNormal><nobr>23/7/07 19:00  Enköpings Sk - 
Falkenbergs Ff</nobr></td>
<td>1.90</td><td>3.30</td><td>3.50</td><td>1.20</td><td>1.24</td><td>1.69</td><td>1.90</td><td>1.70</td><td>1.70</td><td>1.90</td></tr>
<tr class=whitebox><td class=whiteboxnormal>8923</td>
<td class=whiteboxnormal><nobr>23/7/07 19:00  If Sylvia - Östers 
If</nobr></td>
<td>2.64</td><td>3.20</td><td>2.36</td><td>1.45</td><td>1.25</td><td>1.35</td><td>1.91</td><td>1.69</td><td>1.70</td><td>1.90</td></tr>
<tr class=whiteboxhighlight><td class=whiteboxHighlightNormal>8925</td>
<td class=whiteboxHighlightNormal><nobr>23/7/07 20:45  Jönköpings Södra - 
Örgryte Is</nobr></td>
<td>2.97</td><td>3.19</td><td>2.15</td><td>1.54</td><td>1.25</td><td>1.28</td><td>1.90</td><td>1.70</td><td>1.70</td><td>1.90</td></tr>
<tr class=whitebox><td class=whiteboxnormal>8924</td>
<td class=whiteboxnormal><nobr>23/7/07 19:00  Ljungskile Sk - Ifk 
Norrköping</nobr></td>
<td>3.90</td><td>3.33</td><td>1.79</td><td>1.80</td><td>1.23</td><td>1.16</td><td>1.98</td><td>1.64</td><td>1.65</td><td>1.96</td></tr>
</table><br><table cellspacing='1' cellpadding='0' border='0'>
<tr class='dkblueboxcentred'><td colspan=2>Calcio - USA - Major 
League</td><td colspan=3>Risult. 90'</td>
<td colspan=3>Dopp.Chance</td>
<td colspan=2>Under/Over 2.5</td>
<td colspan=2>GG/NG</td>
</tr>
---------------------------
Grazie ancora.
George 

 George
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
In riferimento al codice postato, in che punto devo inserire questa 
istruzione ?
Grazie
Giorgio 

 Giorgio
...
For Each oTblCll In oTblRw.Cells
rst(a) = oTblCll.innerText '<-- scrivo il contenuto delle celle nei
campi
a = a + 1
Next oTblCll
...
rst!intestazione = otbl.rows(0).cells(0).innertext
rst.Update '<-- scrivo il record
...
Se il campo che dovrà contenere l'intestazione l'hai chiamato 
"intestazione"...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ovviamente, funziona alla grande !!!!
Ultima cosa (dicono tutti così :P): è possibile eliminare i primi 8 
caratteri di questa intestazione ?
Ciao
Giorgino

 Giorgino
Ciao.
-- 
Sergio MAZZA