Avatar billede zenghi Nybegynder
02. april 2012 - 20:02 Der er 6 kommentarer og
1 løsning

Hvordan hentes specifik data fra excel til word

Jeg har brug for jeres ekspert viden.

Overordnet set skal jeg lave et dokument hvor den selv henter priser fra excel. Der er jo den mulighed at linke til excel men problemet er at det er over 3000 emner:)

Word dokumentet består af en tabel med 5 kolonner med x antal rækker:
|tekst  | varenr  | tekst  |tekst  |Pris  |
              1234      æble    rød
              1111      pære    grøn

Tanken var at få flettet priserne ind på de rigtige steder ved at søge på 'varenr' i excel arket.

Excel arket står pænt som varenr - tekst - pris

Alle forslag modtages med stor glæde!
Avatar billede supertekst Ekspert
02. april 2012 - 23:06 #1
VBA kan gøre det. Du er velkommen til at sende en kopi/model af begge filer. @-adresse under min profil.

og så velkommen til Eksperten..
Avatar billede supertekst Ekspert
03. april 2012 - 15:24 #2
Rem Reference til Microsoft Excel er sat i VBA (Alt+F11/Tools/References/Microsoft Excel 12.0 Object Library
Rem VBA-koden anbringes i VBA / ThisDocument
Rem ========================================
Const stiTilPriser = "C:\Users\peter\Desktop\ChristianLeu\Priser.xls"          '<-- ændres
Const prisArkNavn = "InvenSalesPriceList"
Dim xlsPriser

Dim antalTabeller As Integer, antalRækker As Integer
Public Sub HentPriser()
    HouseKeeping
       
    TraverserDokument

    lukPriser
    MsgBox "Prissætning er afsluttet"
End Sub
Private Sub HouseKeeping()
    Set xlsPriser = CreateObject("Excel.Application")
    xlsPriser.Workbooks.Open stiTilPriser
       
    antalTabeller = ActiveDocument.Tables.Count
    antalRækker = ActiveDocument.Tables(1).Rows.Count
End Sub
Private Sub TraverserDokument()
Dim ræk, kolonne2, vareNr As Long, pris, p1, p2
Dim toPriser As Variant
On Error GoTo fejl
    Application.ScreenUpdating = False
   
    For ræk = 1 To antalRækker
        With ActiveDocument.Tables(1)
            kolonne2 = .Cell(ræk, 2)
            If Len(kolonne2) > 8 Then
                toPriser = Split(kolonne2, Chr(13))
                p1 = toPriser(0)
                p2 = toPriser(1)
                               
                pris1 = findPris(p1)
                pris2 = findPris(p2)
                pris = Format(pris1, "###,###.00") & Chr(13) & Format(pris2, "###,###.00")
                .Cell(ræk, 5).Select
                Selection.Text = pris
            Else
                vareNr = Left(kolonne2, Len(kolonne2) - 2)  'blank + slutcelle fjernes
                pris = findPris(vareNr)
                .Cell(ræk, 5).Select
                Selection.Text = Format(pris, "###,###.00")
            End If
        End With
    Next ræk
    Exit Sub
   
fejl:
    MsgBox "Fejl erkendt i tabelrække: " & CStr(ræk)
    lukPriser
End Sub
Private Sub lukPriser()
    With xlsPriser
        .Application.Quit
    End With
   
    Set xlsPriser = Nothing
End Sub
Private Function findPris(vareNr)
Dim række As Long
    With xlsPriser.Range("A1:A65000")
        Set c = .Find(vareNr, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            række = c.Row
        Else
            række = 0
        End If
    End With
       
    If række <> 0 Then
        findPris = xlsPriser.Range("C" & række)
    Else
        findPris = 0
    End If
End Function
Avatar billede zenghi Nybegynder
03. april 2012 - 17:44 #3
Det ser rigtig spændende ud!

Kan koden ændres lidt så den kan køre med object library 11 istedet?
Avatar billede supertekst Ekspert
03. april 2012 - 18:10 #4
Ja - du følge blot det anført øverst:
Rem Reference til Microsoft Excel er sat i VBA (Alt+F11/Tools/References/Microsoft Excel 12.0 Object Library)

Alle referencer er i alfabetisk orden - så du fjerner blot flueben for 12.0 - søg ned til Microsoft Excel 11.0 Object Library og sætter flueben i denne.

OK - gem og luk VBA-vinduet. Gem filen og start op igen..
Avatar billede zenghi Nybegynder
04. april 2012 - 11:09 #5
Det er bare mig der glemte fjerne den der stod 'Missing' på.

Har et spørgsmål mere.

Den henter ikke data på rækker med mere end 2 numre.

Har sendt dig en mail.
Avatar billede supertekst Ekspert
04. april 2012 - 11:20 #6
De 2 rækker var hvad jeg umiddelbart kunne se af eksemplerne fra i går.

Inden vi evt. går videre synes jeg du skal afslutte indeværende tråd..
Avatar billede zenghi Nybegynder
04. april 2012 - 12:54 #7
Så afslutter vi da bare tråden.

Mange tak for løsningen.
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
Kategori
Tag et kursus i Word og øg effektiviteten

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