Avatar billede hbl Nybegynder
06. januar 2005 - 14:22 Der er 11 kommentarer og
1 løsning

Overføre data fra en excelfil til et Worddokument

Jeg skal have genereret ca. 200 indviduelle rapporter i word.
En del af indholdet i rapporten(word)er standardtekst, en anden del er udtræk fra en database, og udtrækket i excel.
Til nu har jeg lavet et database udtræk(excel) pr. rapport overført data manuelt med copy og paste til den individuelle rapport(word)!! Det må kunne laves bedre.
Jeg har forsøgt at optage en makro hvor jeg kopier feltet i excel overføre til et bogmærker i word og indsætter det der.
Markroen ser sådan ud:

Sub sammenkædning()
'
' sammenkædning Makro
' Makro indspillet 06.01.2005 af Hans Henrik Bloksgaard
'
    Selection.GoTo What:=wdGoToBookmark, Name:="adresse"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.PasteExcelTable False, False, False
End Sub

Makroen kører ikke - "komandoen er ikke tilgængelig",
Jeg efterlyser i denne makro også en reference til et specifikt regneark og jeg efterlyser også reference til en specifik celle.

Jeg vil jo stå med 200 regneark med hver sit navn
Jeg vil skulle ind på 20 forskellig punkter i arket og hente data.

Jeg håbder nogen kan hjælpe
gode point at hente, skal også ses i lyset at min behov er ret akut.

Med venlig hilsen

Hans Henrik
Avatar billede rvm Nybegynder
06. januar 2005 - 14:40 #1
Her er et eksempel:

Public Sub SkeletTilWord()
'Skelet til OLE-integration med Word

'Punkt 1: Først opretter du en variabel, der kan indeholde Word
Dim V_Wordobjekt As Word.Application

'Punkt 2: Du tildeler variablen værdien et Word-object
Set V_Wordobjekt = CreateObject("Word.Application")

'Punkt 3: Du sørger for at kunne se Word-objektet på skærmen
V_Wordobjekt.Visible = True

'Punkt 4: Nu kan du skrive Word-koden. Alt der foregår i Word skal præfixes
'med "V_WordObjekt"

    Range("OLE").Select
    Selection.Copy
   
    V_Wordobjekt.Documents.Add

    V_Wordobjekt.ActiveDocument.Bookmarks ("Her").Select
    V_Wordobjekt.Selection.Paste


'Du gemmer dokumentet som c:\dokumenter\laanesag.doc
V_Wordobjekt.ActiveDocument.SaveAs FileName:="C:\Laanesag.doc"

'Du lukker Word-objektet (Programmet Word)
'V_Wordobjekt.Quit

'Variablen V_Wordobject fjernes fra PC´ens RAM-lager
Set V_Wordobject = Nothing

End Sub
Avatar billede hbl Nybegynder
06. januar 2005 - 15:28 #2
Kære RVM
Tak for dit input.
Jeg har prøvet dit forslag men det virker ikke som forventet. på ordren run kommer den ud med compile error "user defined type not defined"
Jeg gør sikkert noget forkert.
Skal jeg placerer denne makro på min word fil eller skal jeg placere det på min excel fil. Jeg har placeret makroen på mit excel ark.
Umiddelbart havde jeg forventet en makro med afsæt i mit word dokument, og referencer ned i et excel ark.???

Dit punkt 3 har jeg behov for en uddybning af.
Jeg går ud fra at når du skriver Range("ole") så er det celle placeringen i mit excel ark.
Jeg går ud fra at når du skriver bookmakrs("her") udskifter jeg her med de navne jeg har tildelt i mine bogmærker.
Avatar billede rvm Nybegynder
06. januar 2005 - 16:25 #3
Du har ret - der trænger lidt uddybning :-)

Koden skal placeres i et modul i Excel
Du skal sætte en reference i VBA miljøet til Word:
  Tools/references Microsoft Word object library

Range("Ole") er et navngivet område i Excel. Der kunne også stå Range(A5).Value, der giver indholdet i celle A5

Bookmarks("Her") er et bestemt bogmærke. Du udskifter bare Her med navnene på dine bogmærker
Avatar billede rvm Nybegynder
06. januar 2005 - 16:27 #4
Her er et eksempel til Word

Sub Hent()

Dim xlApp As Object

Set xlApp = CreateObject("excel.application")
xlApp.Visible = True

xlApp.workbooks.Open FileName:="C:\årsregnskab.xls"

xlApp.Range("A5:F16").Select
xlApp.Selection.Copy

Selection.Paste

Selection.TypeParagraph

xlApp.Quit

Set xlApp = Nothing

End Sub
Avatar billede rvm Nybegynder
06. januar 2005 - 16:28 #5
Ovenstående eksempel skal indsættes i et modul i Word og fjernstyrer Excel
Avatar billede hbl Nybegynder
06. januar 2005 - 17:51 #6
Kære RVM
Tak for dit input - jeg er pillet lidt og nu virker det som jeg ønsker.
Jeg vedlægger til orientering den aktuelle makro.
Sub Hent2()

Dim xlApp As Object

Set xlApp = CreateObject("excel.application")
xlApp.Visible = True

xlApp.workbooks.Open FileName:="C:\udtræk til statusrapport.xls"

xlApp.Range("b47:c47").Select
xlApp.Selection.Copy

Selection.GoTo What:=wdGoToBookmark, Name:="postnr"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.PasteAndFormat (wdFormatPlainText)
'Selection.Paste
'Selection.PasteExcelTable False, False, False
'Selection.TypeParagraph

xlApp.Quit

Set xlApp = Nothing
   
End Sub

Mit behov er nu at skulle køre måske 20 makros alle med forskellig cellereference i excel og med forskellig bogmærkereference i word.
Hvordan gøres det nemmest? skal jeg lave 20 makos hent 1(), hent2(), hent3() osv.
og afspille dem fra en fælles makro(hvordan kan den se ud?) eller laves der blot en fælles makro hvor delelementer afspilles i en rækkefølge??( hvordan kan de se ud?)
MVH
HHB
Jeg tilbyder gerne 60 ekstra et svar på denne
Avatar billede rvm Nybegynder
07. januar 2005 - 12:01 #7
Hvis det er fra samme Excelfil, så kan du nøjes med at lave 20 linier, hvor du går til bogmærkerne og indsætter data fra cellereferenceren, da bogmærkenavnene vil være forskellige.



Sub Hent2()

Dim xlApp As Object

Set xlApp = CreateObject("excel.application")
xlApp.Visible = True

xlApp.workbooks.Open FileName:="C:\udtræk til statusrapport.xls"

'Denne del skal køres for hvert bogmærke og område i Excel
Indsæt "b47:c47", "Postnr"
Indsæt "b47:c47", "Adresse"
Indsæt "b47:c47", "Navn"
Osv

xlApp.Quit

Set xlApp = Nothing
   
End Sub

Sub Indsæt(Område as string, Bogmærke as string)
  xlApp.Range(Område ).Select
  xlApp.Selection.Copy
  Selection.GoTo What:=wdGoToBookmark, Name:=Bogmærke
  Selection.PasteAndFormat (wdFormatPlainText)
End sub
Avatar billede hbl Nybegynder
07. januar 2005 - 14:58 #8
Kære Rvm

mange tak for dit svar - det virker.
Hvordan giver jeg dig ekstra point??
MVH
HHB
Avatar billede rvm Nybegynder
10. januar 2005 - 14:25 #9
Det behøver du ikke :-) Men jeg tror det er ved at oprette et nyt spørgsmål, hvor du skriver at pointene er til mig :-)
Avatar billede hbl Nybegynder
10. januar 2005 - 14:45 #10
Kære RVM
Jeg er fortsat usikker på hvordan det kommer til at virke, men ved min næste udfordring skal jeg ved tildeling tænke på dig

Hav en god dag

MVH
HHB
Avatar billede rvm Nybegynder
11. januar 2005 - 08:01 #11
Men du mangler stadig at lukke dette spørgsmål :-)
Avatar billede hbl Nybegynder
11. januar 2005 - 10:56 #12
tak for hjælpen 
mvh
HHB
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