Grazie e a buon rendere.
Giorgio
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
'--> 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
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 ^^
Su questa cosa al momento non mi viene in mente nulla; sarà il Lunedì.
Magari aspettiamo che si svegli qualcun'altro.
Se ho capito bene, basta che memorizzi in una variabile il contenuto della
dell'intestazione; ogni volta che cambi tabella riscriverai il valore.
Comunque con il codice sott'occhio (forse) riusciamo a capirci meglio...
> Grazie ancora ^^
Ciao.
--
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
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
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
Sě.
Se ci fai caso ci sono almeno delle colonne unite:
<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>
e sono nell'intestazione; ma visto che devi leggere solo la prima colonna
della prima riga l'istruzione per avere quell'informazione č:
...
otbl.rows(0).cells(0).innertext
...
> Grazie ancora.
> George
Ciao.
--
Sergio MAZZA
In riferimento al codice postato, in che punto devo inserire questa
istruzione ?
Grazie
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
Ovviamente, funziona alla grande !!!!
Ultima cosa (dicono tutti così :P): è possibile eliminare i primi 8
caratteri di questa intestazione ?
Ciao
Giorgino
Utilizza la funzione Mid (vedi help VBA)...
> Ciao
> Giorgino
Ciao.
--
Sergio MAZZA