17. december 2009 - 22:31Der er
6 kommentarer og 1 løsning
Kan en makro i Word åbne Excel?
Til eksperten
Jeg har følgende problem: Jeg modtager data som Word-dokument, der er opstillet som vist nedenfor. Jeg har imidlertid brug for, at få dem omsat til tabeldata. Hovedparten kan opløses vha. en række søg og erstat kommandoer. Har lavet en makro, der kører fint.
Problemet er at få separeret ord1, ord2, ord3, der er separeret med komma, men da feltet efter Beskrivelse: (ord6) er et friteksfelt, kan komma også optræde her. Løsningen er pt. at lade søg og erstat gøre det meste i Word, herefter gemme filen som tekst, for så at importerer den i Excel og splitte cellen med ord1, ord2, ord3 i tre nye. Spørgsmålet er nu, kan man lave en makro i Word, lad den gøre hvad den skal i Word, for så at åbne Excel og opsplitte cellerne?
Jeg ved ikke, om jeg har misforstået det, du skriver, men der skulle ikke være nogen grund til at involvere Excel, selv om det er teknisk muligt. Word kan konvertere tekst til tabel, hvor du definerer, hvilket tegn, der skal bruges som adskiller, for eksempel:
Dim strSep As String Dim otable As Table
'Definer hvilket tegn, der skal bruges som separator - ændr efter behov strSep = ","
'Konverter markeret tekst til tabel med strSep som adskiller Set otable = Selection.ConvertToTable(Separator:=strSep, AutoFitBehavior:=wdAutoFitFixed) 'Nu kan du gøre noget med oTable efter behov, f.eks. With otable .ApplyStyleHeadingRows = True .Rows(1).Shading.BackgroundPatternColor = wdColorGray10 End With
Hvis jeg kan blive i Word, er det super. Jeg har bare ikke kunnet få isoleret Ord1-Ord3 i Word uden at det går galt i fritekstfeltet Ord6, hvilket jeg kan i Excel. Håber det er mere klar tale.
Indeholder teksten kun "ren" tekst uden speciel formatering? I givet fald burde du kunne bruge denne fremgangsmåde:
Dim n As Long Dim oRange As Range
'Definer i hvilke afsnit udskiftning skal foretages 'her er som eksempel brugt afsnittene i markeringen Set oRange = Selection.Range
For n = 1 To oRange.Paragraphs.Count With oRange.Paragraphs(n) 'Fjern de første 2 forekomster af ", " .Range.Text = Replace(Expression:=.Range.Text, Find:=", ", Replace:="", Start:=1, Count:=2) End With Next n
Nu er jeg godt nok tæt på. Kun to små problemer: 1. Koden for tabulator. Den skal sættet ind Replace:="" (kender kun ^t/^9, men den duer ikke her). 2. Den tager kun første post, men forsætter ikke med de næste.
Det er forøvrigt en god hjemmeside du har - mange nyttige ting.
Velbekomme. Det var godt, at du fik det til at virke. Dette er lavet som et svar.
Synes godt om
Ny brugerNybegynder
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.