24. marts 2003 - 22:58Der er
26 kommentarer og 1 løsning
Excel-Access-Word problem!
Hej
Jeg har følgende problem: Jeg har i Excel udfærdiget en grafisk brugerflade hvori der skal indtastes 16 stk person navne og cpr.nr. For hver person skal der anbringes en kommandoknap der tildeles en makro der skal hente data fra en access-database (Personregister.mdb)udfra oplysningerne i excel og overføre disse til et worddokument (der fungerer som skabelon). Jeg ved ikke om det er fortståeligt og om det overhovedet er muligt vha makro/VBA i Excel? vh Steen
Hvorfor inddrage Excel? Kan du ikke lave brugergrænsefladen i Access. Det er vel bare en omvej at involvere Excel i at overføre data fra Access til Word.
Hmm . det er egentlig fordi jeg efterhånden har rimelig erfaring med brugen af excel herunder VBA men kun dårligt kender Access - jeg har endda overvejet helt at skippe Access. Men kan man da udfra Access udføre ovenstående og er det tilgængeligt?
Enig med jkrons. Opret en database med din personer. Gå i Word og opret et standardbrev som skabelon og flet oplysningerne med din database. Tager under 1/2 min. af flette til samtlige. Derudover kan du også oprette en skabelon hvor du udtrækker data fra din database ved hjælp af at du i Word indsætter database og benytter din database.
Ja jeg er bekendt med at kunne flette det er præcist det vores sekretær gør pt og som jeg skal forsøge at effektivisere - vi har 16 personer (patienter) indlagt af gangen og der skal være hurtig adgang til kontinuationer (word). Desuden skal hun ha' mulighed for at let at finde tidl. patienter der ex. ringer (udfra navn cpr el.lign). - ovenstående er egentlig sagens kerne og grunden til at jeg nok er nødt til at anvende access (alt er i forvejen indtastet der).
Hvis i let skal kunne finde tidl. patienter, har I kun brug for Access. I har oprettet en database i Access. Nu skal i så oprettte en forespørgelse i Access, hvor i forespørger på f.eks. navn, personnr. eller andet. Resultatet fra forespørgelsen tager under 1 sek. Dette er set udfra at I har alle patienter indskrevet i databasen.
Det lyder rigtigt MEEEN sekretæren har desværre oprettet flere databaser - en for hver operationstype (3 stk ialt) hvilket gør det ret besværlig at søge eller kan man vha en forespørgsel søge på tværs at databaser? Man kunne måske også samle databasen - men pågældende sekretær er ikke glad for at man piller ved hendes arbejde?
Nej det er ikke det samme, men de tabeller som ligger andre steder kan let importeres til aktuelle database. Jeg prøver lige at se om man også kan oprette en forespørgelse ud fra andre tabeller i andre databaser øjeblik.
Ok. Du kan kun forespørege fra den samme database. Har i flere forskellige databaser skal i tilføje diverse tabeller i den samme database og derefter er det ikke noget problem. Det er ikke noget problem at tilføje en ny tabel i en eksisterende database.
Jeg håber også at det har givet dig en idé om hvad i kan gøre, for hvis i har flere databaser kan i samle det til 1 og derfra foretage en forespørgelse helt uden om andre programmer, og i løbet af sek. Håber at det er til hjælp, eller spørg bare her igen og jeg skal uddybe svaret.
steen-> Du kan lave en ny tom database. Men i stedet for at importere tabellerne til denne, kan du i stedet sammenkæde tabellerne. Så kan de vedligeholdes i de oprindelige databaser, men kan forespørges i den nye.
Vil det sige at man IKKE behøver at "røre" ved de gamle for at lave denne sammenkædning af flere databaser. Hvorledes foregår sammenkædningen? vh Steen
Nej, du behøver ikke at røre de "gamle" databaser.
Opret en ny, tom database. Vælg Tabel. Klik på Ny. Vælg Sammenkæd Tabel. Find Databasefilen, vælg tabellen.
Gentag for hver tabel du ønsker at sammenkæde. Nu kan du arbejde med tabellen præcis som om den befandt sig i den nye database - herunder også opdatere, hvilket man selvfølgelig skal passe lidt på med, med mindre der er helt styr over, hvem der gør hvad.
For god ordens skyld vil jeg lige gentage mit svar omkring en "ren" excel/word løsning fra usenet her, til benfice for de ekspertenbrugere, der ikke læser usenet.
"Koden nedenfor forventer at skabelonen hedder kontination.dot ("en rigtig skabelon"), og at den ligger i standardskabelon biblioteket. Du må selv eventuelt rette filnavn og -sti.
Mit eksempel indeholder to bogmærker i anbragt i skabelonens header. (Indsæt - Bogmærke). De hedder hhv. cpr og navn. Lav et bogmærke for hver information, du vil have skrevet, og gentag linierne, der anbringer tekst i bogmærket. Koden skal selvfølgelig tilsvarende udvides med variable til den info, der skal anbringes i andre bogmærker, samt kode der henter værdierne fra Excel. Du behøver heller ikke slå fornavn og efternavn sammen som jeg gør, men kan placere to bogmærker lige ved siden af hinanden'. Husk også at rette stien til den placering hvor dokumentet gemmes.
'Vi erklærer lige nogen variable Dim Wdapp As Object Dim Cprnr As String Dim Fnavn As String Dim Enavn As String Dim Navn As String
'Og tildeler dem en værdi baseret på indholdet af arket
'Undersøger om Word er startet On Error Resume Next Set Wdapp = GetObject(, "Word.application") If Err.Number <> 0 Then
'Ellers starter vi word Set Wdapp = CreateObject("Word.Application") End If
'Så laver vi et nyt tomt dokument baseret på den relevante skabelon Wdapp.Documents.Add ("c:\windows\application data\microsoft\skabeloner\kontinuation.dot")
'Skabelonen indeholder to bogmærker i headeren. De hedder cpr og navn 'I disse bogmærker indsætter vi den variable information fra arket. Wdapp.ActiveDocument.Bookmarks("cpr").Range.Text = Cprnr Wdapp.ActiveDocument.Bookmarks("Navn").Range.Text = Navn
'Så skal dokumentet gemmes med indholdet af cpr variable som filnavn ' Husk at ret stien til det rigtige i dit tilfælde Wdapp.ActiveDocument.SaveAs Filename:="c:\test\" & Cprnr & ".doc"
'Så gør vi Word synlig så der kan skrives i kontinuationen Wdapp.Visible = True
'Og frigiver lidt hukommelse når Word lukkes Set Wdapp = Nothing
Det gør du ikke :-) Du skal bare undlade at pege på de celler, der indeholder overskrifterne. Peg på de celler, der indeholder det enty, du vil overføre.
Okaj. Jeg får ikke noget output i mine formfields ?? Den laver et dokument der hedder noget med cprnr'et. Kan man ikke lave det sådan, at det loop'er, altså tager ALLE entries i et excel ark?
Løsningen til steensommer arbejder ikke med formfields, men med bookmarks, da det oprindelige spørgsmål handlede om at overføre nogle helt specifikke informationer fra Escel til headeren i et word-dokument.
Ahaaa.. men er brevfletning ikke også kun specifikke data ? Vil gerne kunne skrive det samme brev til 10 mennesker, men adressere dem med de 10 menneskers adresser.
Løsningen ovenfor er beregnet til, at du kan overføre navn og adresse på en enkelt person til et dokument, og hvor selve dokumentteksten er forskellig fra gang til gang.
Velbekomme! Volder brevfletning med Excel problemer, så opret et spørgsmål i Teksbehandlingskategorien, Så ser vi på det der :-)
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.