Avatar billede michaelrar Seniormester
20. juni 2022 - 18:22 Der er 8 kommentarer

Import af data fra hjemmeside til Excel

Hej alle


Jeg har et stort ønske om, at importere alle data fra undersiderne på hjemmesiden www.aneguf.dk til et Excelark. Gerne alle undersider til et samlet Ark eller alternativt hver side for sig i et Ark.
Behovet er der, fordi at siden løbende bliver opdateret og der er et ønske om at kunne søge på tværs af siderne (årstal)

Om det er VBA eller en Excel funktion er underordnet. Jeg har bare aldrig arbejdet med dataimport fra nettet før.

Håber nogen kan lede mig på sporet af en løsning :-)
Avatar billede bvirk Professor
20. juni 2022 - 20:14 #1
Det kan nok godt lad sig gøre. Excel kan åbne html dokumenter og de enkelte årstal indeholder hver en nydelig nydelig html tabel.
Prøv f.eks med 1900 - i et console vindue:
wget www.aneguf.dk/1900.htm
(wget er indehold i en pakke der er beskrevet her https://en.wikipedia.org/wiki/UnxUtils)
Prøv at åbne 1900.htm i excel - går det? Måske skal noget af det html der er gør det til et html dokument klippes væk
Alså måske

<html><head>
<meta charset=UTF-8 />
<link rel='stylesheet' type='text/css' href='_start.css'>
<script language=javascript>
if (top.location == self.location) {
top.location.href='index.htm'
}
</script>
</head><body>

og det sidste
</body></html>

Der skal tilses at excel forstår at det er i utf-8 tegnsættet.

Hvis det lykkedes hentes alle årstallene som htm filer ved at scripte i et eller andet sprog.
Derefter er det vba automation at samle det så hvert årtal bliver et ark. Hvert årstal 'åbnes' i et excel dokument og det indhold flyttes til et ark i et andet dokument - altså det excel dokument med ark holdes åbent og for hver årstal åbnes et excel dokument der kun bruges som transit.
Hvis der skal skal klippes i html'en før åbning gøres det indledene i vba.

Ja - der ligger lidt i det afhængigt af hvor man står.
Avatar billede bvirk Professor
20. juni 2022 - 20:33 #2
Men 'søge på tværs' burde ligge hjemmeside - lokalt kan man også bare samle alle tabeller i en html fil - så kan der søges på tværs vha browseren
Avatar billede michaelrar Seniormester
20. juni 2022 - 21:10 #3
Enig mht. at det burde ligge på hjemmesiden, men den giver desværre en time out hvis man prøver på det :-(
Avatar billede michaelrar Seniormester
20. juni 2022 - 21:28 #4
Jeg kan godt få VBA til at åbne hjemmesiden, men det er som om, at det kun er index-siden jeg får åbnet, selv om jeg skriver denne webadresse
http://www.aneguf.dk/1900.htm
Er der noget jeg overser ?
Web-kodning er desværre ikke min stærke side :-(
Avatar billede bvirk Professor
20. juni 2022 - 22:00 #5
Ja browseren hopper til index siden det er der sørget for med:

if (top.location == self.location) {
top.location.href='index.htm'
}
Kan du slå javascript fra i browseren - jeg kan med uBlock Origin - så ses siden med 1900
Man kan også gøre noget andet i firefox - højre klikkende og vælgende 'view pagesource'
havner man med denne adresselinie

view-source:http://www.aneguf.dk/index.htm

og rettet man denne til f.eks

view-source:http://www.aneguf.dk/1900.htm

ses html kilden

Men hvis alle årstalene skal hentes ned så skal man ikke bruge browseren men et tool som wget eller curl - begge findes til windows men er noget der formodentligt skal opsøges og installeres.
Avatar billede bvirk Professor
20. juni 2022 - 22:09 #6
Overså at du skrev 'VBA til at åbne hjemmesiden' - jeg ved ikke helt hvad der ligger i det - men hvis du kan måske hente årstal side til fil vha vba og hvis det er gøres direkte - altså uden at involvere nogen browser komponent så burde det være årstals html'en du får fat i.
Avatar billede bvirk Professor
20. juni 2022 - 22:57 #7
Uden at kunne begrunde det tror jeg det er Microsoft.XMLHTTP komponenten der er vær at satse på til forsøg. (hvis alt skal gøres i vba) Til

https://stackoverflow.com/questions/17877389/how-do-i-download-a-file-using-VBA-without-internet-explorer

vil jeg tilføje en linie med charset at ekspermintere med

oStream.Write WinHttpReq.responseBody
oStream.charset = "utf-8"
oStream.SaveToFile ....
Avatar billede Rune1983 Ekspert
21. juni 2022 - 07:17 #8
Nu ved jeg ikke hvilke slags data det er. Men data plejer som regel at komme fra en database.
Var det ikke bedre at trække dem ud fra det databasen i stedet.
Og hvis det er noget du skal have ofte. Få det lavet dynamisk med et script.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





CIO
10 gratis artikler: Få gode råd fra Danmarks bedste it-ledere