03. marts 2004 - 21:18Der er
14 kommentarer og 1 løsning
tabeller fra html til en excel fil - kan man det?
Jeg har en del html filer som jeg godt kunne tænke mig at få over i en excel fil. Det skal være sådan at man tager hver linie for sig, og putter i en kolonne:
Eksempel: <B>S</B> Navn: Søren Sørensen Praksis: Pædagog Adresse: Ryesgade 100 Postnummer: 8000 Århus C Telefon: 86 86 86 86 E-mail: soren@soren.dk Speciale: børn, unge og voksne
Det skulle gerne give 7 kolonner med hver deres egenskab
Er der ikke nogle eksperter der ved hvordan man gør det ? Jeg har virkelig ikke en anelse - jeg ved ikek engang om det er svært, men her er 100 point i puljen for et rigtigt svar, sig endelig til hvis der skal mere i ;-)
Det bliver svært for der er ingen systematik i oplysningerne i den nævnte html-fil.
For nogle personer er der 7 linier, for andre er der 8, 9, 10 eller 11 linier.
Løsningsforslag 1: Hvis du kun ønsker de 7 kolonner.
1. Marker alle personer i html-fil. 2. Kopier dem (Ctrl-C) 3. Skift til Excel 4. Aktiver celle A1 5. Sæt ind (Ctrl-V) 6. Marker de 7 celler for den 1. person (Klik 1 cellen med navn, hold Ctrl-tasten nede og klik i hver af de resterende 6 celler) 7. Marker celle B2 8. Vælg Rediger->Indsæt speciel, Transponer, OK 9. Gentag punkt 6-8 for hver person 10. Slet kolonne A 11. Indtast overskrifter i række 1
Besværligt - ja; men lettere end at indtaste oplysningerne igen.
1. Marker alle personer i html-fil. 2. Kopier dem (Ctrl-C) 3. Skift til Excel 4. Aktiver celle A1 5. Sæt ind (Ctrl-V) 6. Indsæt ekstra rækker så oplysningerne står i den samme rækkefølge for alle personer. 1. celle: navn, 2. celle: praksis.....11. celle: speciale 7. Marker alle celler for den 1. person (Klik 1 cellen med navn, hold Shift-tasten nede og klik i den sidste celle) 8. Marker celle B2 9. Vælg Rediger->Indsæt speciel, Transponer, OK 10. Gentag punkt 7-9 for hver person 11. Slet kolonne A 12. Indtast overskrifter i række 1
Hvis du kan køre en makro, så kan dette måske hjælpe Kopier din webside (ctrl-A og kopier) I regne arket vælg celle A1 og vælg indsæt speciel. Indsæt som tekst.
Kør makroen GetHTML Den placerer nu de transponerede (vendte) data i kolonne F og udaf.
Sub GetHtml() Application.ScreenUpdating = False Data_CleanUp TransposeData Application.ScreenUpdating = True End Sub
Private Sub Data_CleanUp() Dim EntireRange As Range Dim x As Long Set EntireRange = Range("A1:A" & Range("A65536").End(xlUp).Row) For x = EntireRange.Cells.Count To 2 Step -1 If Len(Cells(x, 1)) <= 3 And Len(Cells(x - 1, 1)) <= 3 Then Cells(x, 1).EntireRow.Delete End If If Len(Cells(x, 1)) <= 3 Then Cells(x, 1) = "" Next Cells(1, 1) = "" End Sub
Private Sub TransposeData() Dim EntireRange As Range Dim rg1 As Range, rg2 As Range Dim x As Long, y As Long x = 2 Set EntireRange = Range("A1:A" & Range("A65536").End(xlUp).Row) While x < EntireRange.Cells.Count Set rg1 = Range(Cells(x, 1), Cells(x, 1).End(xlDown)) y = y + 1 Set rg2 = Cells(y, 6) rg2.Resize(, rg1.Cells.Count) = Application.Transpose(rg1) x = rg1.End(xlDown).Row + 2 Wend Columns("F:AA").EntireColumn.AutoFit End Sub
men måske er en forklaring lige på sin plads. data_cleanup fjerner alle overflødige tomme linier samt de linier hvor der kun er et bogstav. Den efterlader en tom linie mellem hver record. Dette udnyttes i TransposeData til at "markere" alt mellem de tomme og transponere dette.
Data bliver dog aldrig bedre end de er på forhånd, dvs hvis telefonnummer står normalt i 4 felt og nogle gange optræder i 5 felt ændrer makroen ikke på det.
Korrekt Erik, hvis data'ene er rodet er resultatet det også, men alle linier bliver transponeret og derefter er brugeren på egen hånd. Det er ikke muligt at rette disse data op automatisk, men generelt burde de første 4 være ok, men med enkelte svipsere.
Vedkommende, der har lagt data ud, har ihverttilfælde ikke tænkt på, at andre skulle kunne bruge den sådan her :-)
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.