Gå til innhold

Slå sammen word-dokumenter?


Fjøslukt

Anbefalte innlegg

Hei,

 

har et "spesielt" behov. Det har seg slik at jeg har ca 100 forskjellige word dokumenter (brev) som kun inneholder tekst (formatert som normal, og heading 1). Ingen av disse har noe andre objekter i seg enn kun ren teskt.

 

Problemet er at jeg skal ha alle disse dokumentene inn i spesielle maler (f.eks. brevmalen til et firma). Jeg har et tomt dokument som er brevmalen jeg bruker.

 

Det jeg gjør nå, er å ta å kopiere all testen fra hvert enkelt brevdokument inn i brevmalen, og lagre dokumentet som tittelen på det opprinnelige brevet. (Det er viktig at tittelen blir beholdt siden jeg bruker disse i noen linker)

 

Men siden jeg har over 100 dokumenter, tar dette veldig lang tid. Jeg har prøvd meg med combine documents i word, men det virker på meg som den ser etter forskjeller i dokumenter. Siden mitt behov er å slå sammen dokument med tekst med en mal (som gjerne inneolder logo, topptekst, og bunntekst), går ikke dette.

 

Er det noen som har noen tips til hva jeg kan gjøre for å lette arbeidet?

Lenke til kommentar
Videoannonse
Annonse
Sett inn -> Objekt -> Tekst fra fil

 

 

Ja, det er det jeg gjør idag, men jeg skulle hatt en måte som gjør dette automatisk. Dvs at den setter inn teskt fra alle filene, og lagrer de som speperate filer med opprinnelig filnavn..

 

Spesielt siden det er så mange dokumenter, og denne prosessen gjøres mange ganger

Lenke til kommentar

Som Harald skriver; her må du til med makroer. Et lite spørsmål til: Er det noen grunn til at du må legge til teksten i malen og ikke omvendt? Hvis malen kun inneholder topp- og bunntekst vil det være enklere å legge disse til i dokumentene enn å gjøre det den veien du har foreslått.

Lenke til kommentar

Man må vite bøttevis med tilsynelatende ubetydelige detaljer for å levere deg en makro som funker. Og siden du tilsynelatende er blank på området, vil du antakelig bare være misfornøyd og sur siden den ikke funker som forventet med en gang.

 

Gå løs på dette selv. Brekk ned oppgaven til noe a la dette

-hvordan få en makro til å sette tekst inn i en mal?

-hvordan få en makro til å lagre et dokument med et spesielt navn?

-hvordan få en makro til å gå igjennom alle filene i en mappe?

-osv osv osv

og så prøver og leser og googler du og lærer noe nytt.

 

HTH. Beste hilsen Harald

edit:typo

Endret av Harald Staff
Lenke til kommentar

Takker for hjelpen så langt...

 

Er ikke helt blank med makro, men trenger litt hjelp.

 

Har fått til en makro som setter inn teksten i malen, men den setter bare inn teksten fra det samme dokumentet (f.eks dokument med navn: brevtekst1.docx) I tillegg lagrer ikke makroen filen, men åpner kun dialogboksen "lagre som"

 

Så jeg føler at jeg er et skritt i riktig retning, jeg mangler bare å få makroen til å gjøre det samme med alle filene i mappen, i tillegg til å lagre de automatisk, ikke bare åpne dialogboksen "lagre som"

Lenke til kommentar

Markoen jeg har til nå er:

 

Sub Testmakro1()

 

ChangeFileOpenDirectory _

"C:\Documents and Settings\...\...\...\..\" -> er i realiteten en lang mappestruktur, men for å gjøre det enkelt skriver jeg den slik i denne posten!

Documents.Open FileName:="malen.docx"

ChangeFileOpenDirectory _

"C:\Documents and Settings\...\...\..\.." -> er en annen mappestruktur, siden brevene med tekst ligger i en annen mappe enn selve malen

Selection.InsertFile FileName:= _

"brevtekst1.docx" -> det er her jeg sliter, jeg skulle hatt det slik at den setter inn den første filen i mappen, deretter lagrer den "nye" filen med samme navn som brevet med tekst (f.eks hvis første fil het brevtekst1.docx, så vil jeg at den nye filen også skal hete dette)

Application.Run MacroName:="ODFConverter.ODF.FileSaveAs"

End Sub

Lenke til kommentar

Nå er jeg nesten i mål, men jeg har et problem. Makroen er som følger:

 

Sub Test()

Dim TheFile As String

Dim MyPath As String

Dim FVFile As String

MyPath = "C:\Documents and Settings\..\..\..\"

Malen = "brevmal.doc"

ChDir MyPath

TheFile = Dir("*.docx")

Do While TheFile <> ""

If TheFile <> Malen Then

Documents.Open FileName:=Malen

Selection.MoveDown Unit:=wdLine, Count:=9

Selection.InsertFile FileName:=TheFile

Application.ActiveDocument.SaveAs (TheFile) ---> her er problemet!

TheFile = Dir

End If

Loop

End Sub

 

Jeg får besjed om at jeg ikke kan lagre en fil med samme navn som en fil som er i bruk. Dette er merkelig, fordi når jeg lagrer filen manuelt med det samme navnet så går det bra. I tillegg er jo ikke TheFile i bruke, TheFile er jo bare selve teksten som hentes inn som objekt, Word åpner jo ikke filene.

 

Noen tips?

Lenke til kommentar

Huff, jeg kjenner ikke innmaten i Word særlig godt. Men det kan kanskje være at Word ikke er ferdig med fila før du begynner å lagre. Prøv en DoEvents aller først:

 

Selection.InsertFile FileName:=TheFile

DoEvents

Application.ActiveDocument.SaveAs (TheFile) ---> her er problemet!

 

Ellers får vi vente på Fredrik ... :yes:

Lenke til kommentar

Ok, det med DoEvents gikk ikke, men fant en løsning.

 

Hvis jeg først kjører gjennom med et dokument, men velger å lagre det manuelt "altså kaller jeg det for 1.doc). Deretter åner jeg makroen i dette dokumentet, da går det å bruke Application.ActiveDocument.SaveAs (TheFile)

 

Det kommer altså an på hvilket dokument jeg åpner når jeg skal kjøre makroen. Har prøvd å kjøre makroen i selve malen, det gikk ikke, da får jeg en melding om at den ikke finner malen.

 

Hvis jeg kjører makroen i en av brevene, får jeg beskjed om at jeg ikke kan lagre med samme navn.

 

Hvis jeg lager meg et tomt word dokument, for jeg også beskjed om at jeg ikke kan lagre med samme navn. Altså er den eneste muligheten å kjøre gjennom et brev, og lagre dette manuelt.

 

MEN, det siste "problemet" nå (like før alle brikkene faller på plass her) er at de ferdige dokumentene er lagret som docx. (Det var brevtekstene i utgangspunktet også)

 

Grunnen til at malen er i doc format, mens brevene er i docx format er at ellers forsøker makroen å sette inn malen i malen. Jeg prøvde å fikse dette med en if kode, om at if TheFile <> Malen Then.....

 

Problemet er at når If TheFile = Malen, så stopper alt opp (sikkert fordi jeg ikke har skrevet en kommando hva den skal gjøre dersom TheFile=Malen. Tanken er at dersom TheFile = Malen så skal den bare hoppe over filen, og gå videre. Hvordan skriver jeg dette?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...