Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel VBA HTML-Tabelle auslesen

Frage Entwicklung VB for Applications

Mitglied: chef1568

chef1568 (Level 1) - Jetzt verbinden

08.09.2014, aktualisiert 14:35 Uhr, 3309 Aufrufe, 2 Kommentare

Hallo,
ich möchte eine in einer Email eingebundenen HTML-Tabelle auslesen und in einen Array speichern.
Hierzu habe ich bereits den gesamten Inhalt der Email als string in einer Variable gespeichert.
Nun habe ich aber das Problem die Tabelle und die Informationen daraus herauszufiltern.

Ich benötige die Inhalte der Zellen eigentlich 1:1 in einem Array - bei XML ging das leichter.

01.
  
02.
<table width="1965" style="width:1179pt;margin-left:1.9pt;"> 
03.
	<col width="116" style="width:69.8pt;"><col width="805" style="width:483.1pt;"><col width="123" style="width:73.8pt;"><col width="143" style="width:86.1pt;"><col width="131" style="width:78.8pt;"><col width="129" style="width:77.8pt;"><col width="39" style="width:23.8pt;"><col width="476" style="width:285.8pt;"> 
04.
	<tbody> 
05.
	<tr height="25" style="height:15pt;"> 
06.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Stand</span></font></td> 
07.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">28.08.14</span></font></td> 
08.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
09.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
10.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
11.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
12.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
13.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;"></span></font></td> 
14.
	</tr> 
15.
	<tr height="25" style="height:15pt;"> 
16.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Fahrzeug</span></font></td> 
17.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Kommentar</span></font></td> 
18.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Typ</span></font></td> 
19.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Verantwortlich</span></font></td> 
20.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Status</span></font></td> 
21.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Zieltermin</span></font></td> 
22.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">ID</span></font></td> 
23.
		<td style="background-color:#BFBFBF;"><font face="Calibri" size="2"><span style="font-size:11pt;background-color:#BFBFBF;">Anmerkung</span></font></td> 
24.
	</tr> 
25.
	<tr height="25" style="height:15pt;"> 
26.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Testauto1</span></font></td> 
27.
		<td><font face="Calibri" size="2" color="red"><span style="font-size:11pt;">Kabel reparieren</span></font></td> 
28.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Maßnahme</span></font></td> 
29.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Mustermann</span></font></td> 
30.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">offen</span></font></td> 
31.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">19.09.14</span></font></td> 
32.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">80</span></font></td> 
33.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></td> 
34.
	</tr> 
35.
	<tr height="25" style="height:15pt;"> 
36.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Testauto2</span></font></td> 
37.
		<td><font face="Calibri" size="2" color="red"><span style="font-size:11pt;">Kabel reparieren</span></font></td> 
38.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Maßnahme</span></font></td> 
39.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">Mustermann</span></font></td> 
40.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">offen</span></font></td> 
41.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">19.09.14</span></font></td> 
42.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">81</span></font></td> 
43.
		<td><font face="Calibri" size="2"><span style="font-size:11pt;">&nbsp;</span></font></td> 
44.
	</tr> 
45.
</tbody> 
46.
</table>
Könnt ihr mir hierbei etwas auf die Sprünge helfen?
Das Ergebnis sollte wie folgt aussehen:
01.
  
02.
arr(0, 0) = Fahrzeug 
03.
arr(0, 1) = Kommentar 
04.
arr(0, 2) = Typ 
05.
arr(0, 3) = Verantwortlich 
06.
arr(0, 4) = Status 
07.
arr(0, 5) = Zieltermin 
08.
arr(0, 6) = ID 
09.
arr(0, 7) = Anmerkung 
10.
 
11.
arr(1, 0) = Testauto1 
12.
arr(1, 1) = Kabel reparieren 
13.
arr(1, 2) = Maßnahme 
14.
arr(1, 3) = Mustermann 
15.
arr(1, 4) = offen 
16.
arr(1, 5) = 19.09.14 
17.
arr(1, 6) = 80 
18.
arr(1, 7) = "" 
19.
 
20.
arr(2, 0) = Testauto2 
21.
arr(2, 1) = Kabel reparieren 
22.
arr(2, 2) = Maßnahme 
23.
arr(2, 3) = Mustermann 
24.
arr(2, 4) = offen 
25.
arr(2, 5) = 19.09.14 
26.
arr(2, 6) = 81 
27.
arr(2, 7) = ""
danke Feder
Mitglied: colinardo
LÖSUNG 08.09.2014, aktualisiert um 14:40 Uhr
Hallo Feder,
in diesem Beispiel ist dein HTML-Schnippsel in der Variablen strContent hinterlegt. Die erste Zeile der Tabelle wird wie gewünscht nicht mit ins Array übernommen
01.
Dim oDom As Object, arr as Variant 
02.
Set oDom = CreateObject("htmlfile") 
03.
oDom.body.innerHTML = strContent 
04.
     
05.
With oDom.getElementsByTagName("table")(0) 
06.
   ReDim arr(0 To .Rows.Length - 2, 0 To .Rows(1).Cells.Length - 1) 
07.
   For r = 1 To .Rows.Length - 1 
08.
       For c = 0 To .Rows(r).Cells.Length - 1 
09.
            arr(r - 1, c) = .Rows(r).Cells(c).innerText 
10.
       Next 
11.
   Next 
12.
End With
In arr befinden sich dann deine gewünschten Daten.

Grüße Uwe

Zur Info: So läuft das nur in VBA für VBS müsste man es so abändern.
VBS-Variante
01.
Dim oDom, arr 
02.
Set oDom = CreateObject("htmlfile") 
03.
oDom.write strContent 
04.
oDom.Close 
05.
 
06.
With oDom.getElementsByTagName("table")(0) 
07.
   ReDim arr(0 To .Rows.Length - 2, 0 To .Rows(1).Cells.Length - 1) 
08.
   For r = 1 To .Rows.Length - 1 
09.
       For c = 0 To .Rows(r).Cells.Length - 1 
10.
            arr(r - 1, c) = .Rows(r).Cells(c).innerText 
11.
       Next 
12.
   Next 
13.
End With
Bitte warten ..
Mitglied: chef1568
08.09.2014 um 14:36 Uhr
Hallo Uwe,

genau das ist das was mir weiterhilft! Vielen Dank!

gruß feder
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
VBA zum auslesen von einem Zellbereich Excel
gelöst Frage von schwalbepilotMicrosoft Office1 Kommentar

Hallo, leider bin ich mit Makros noch nicht su vertraut. Ich habe in einen Ordner mehrere hunderte Datein. Alles ...

Microsoft Office
Excel VBA Datein auslesen
gelöst Frage von schwalbepilotMicrosoft Office8 Kommentare

Hallo, ich benutze MS Excel 2010 und bräuchte ein Makro, zum auslesen mehrerer Excel Datein. Diese befinden sich alle ...

Microsoft Office
EXCEL VBA Termindaten aus Tabelle Filtern
Frage von t3jxbusMicrosoft Office

Hallo, ich habe hier folgenden Codeblock gefunden für VBA im Excel: Das ganze funktioniert auch soweit super. Ich beschreibe ...

VB for Applications
Excel 2013 VBA Tabellen aufrufen
Frage von Just4fun1990VB for Applications5 Kommentare

Hallo Administrator.de User, ich habe leider folgendes Problem. Und zwar soll Excel bei einem inaktiven Fenster eine Tabelle aufrufen. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 3 StundenBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 5 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 20 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 21 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...