Avatar billede BIRGER Seniormester
25. februar 2003 - 16:27 Der er 13 kommentarer og
1 løsning

Indsætte udvagte data fra Acces-tabel i Word ved hjælp af VBA

Jeg vil gerne have forslag til et program i vba som kan hente data i en accestabel.

Jeg forestiller mig, ved at taste et kundenr i et worddokument, indsættes navn og adresse automatisk i dokumentet

Hilsen
Bjarne
Avatar billede somaliomar Praktikant
25. februar 2003 - 22:07 #1
Du kan begynde her...

Public Sub IndsaetKundeInfo(intKundenr As Integer)
   
    Dim objConn As ADODB.Connection
    Dim objRs As ADODB.Recordset
    Dim strConnString As String
    Dim strSQL As String
   
    Set objConn = New ADODB.Connection
    Set objRs = New ADODB.Recordset
   
    strConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\DATABASE_FIL.MDB"
    objConn.Open strConnString
   
    strSQL = "SELECT Navn, Adresse FROM Tabel WHERE Kundenr = " & intKundenr
    objRs.Open strSQL, objConn
   
    If Not objRs.EOF Then
        Selection.Text "Kundenavn: " & objRs("Navn")
        Selection.Text "Adresse: " & objRs("Adresse")
    End If
   
    objRs.Close
    objConn.Close
End Sub
Avatar billede BIRGER Seniormester
03. marts 2003 - 14:29 #2
Hej Hej
Tak for svaret. Jeg har prøvet mig lidt frem og kan ikke rigtig få det til at funke. Jeg får bla. fejlmelding ved de Abobd kommandoer. Det jeg ville frem til var at at indsætte data fra en Access database...C:kunder...tabel..emner....Postid. kundenr...Ved at taste Kundenr i et felt i Word, skulle så pågældende kundenr's  navn og adresse indsættes (i en skabalon).


Hilsen
Bjarne
Avatar billede somaliomar Praktikant
03. marts 2003 - 16:18 #3
Hvis det ikke funker og du ikke selv kan finde svar på problemet, så spørger du da bare igen :)

Du får den fejlmeddelelse, fordi du ikke har inkluderet ADODB-referencen i din kode. Sådan gør du:

1. Start Word og åbn dit dokument.
2. Tryk F11 for at komme ind i VBEditor.
3. Under Tools klikker du på References...
4. Når vinduet References dukker op, finder du den seneste version af
    Microsoft ActiveX Data Objects Library og sætter et flueben ved den og OK.
5. Luk VBEditor, gem dit Word-dokument og genstart Word.
Avatar billede BIRGER Seniormester
04. marts 2003 - 10:18 #4
Hej igen!
Det ser ud til at det kan virke med adodb.ref sat til, men jeg får noget fejlmelding i første linie ...puplic sub. Er den beregnet til at opsamle et kundenr? Det er ligesom om at der kræves et sub navn?
Er denne linie en kombination af Navn på prog. og opsamling af kundenr?
hilsen Bjarne
Avatar billede somaliomar Praktikant
04. marts 2003 - 10:30 #5
Du må lige skrive hvilken fejlmeddelelse du får. Ellers har jeg ikke en jordisk chance for at finde ud, hvad der er galt. Du må også meget gerne poste hele din kode herinde, så jeg ved hvilken kode jeg har med at gøre.
Avatar billede BIRGER Seniormester
04. marts 2003 - 13:12 #6
Jeg er ikke sikker på at du fik mit sidste svar, men den fejlmeddelelse jeg får er at når jeg starter prog..kommer der en dialogboks der spørger på makronavn. Min kode er magen til din bortset fra mine fil-navne...C:kunder.mdb..  tabel emner
hilsen
Bjarne
Avatar billede somaliomar Praktikant
04. marts 2003 - 17:41 #7
"når jeg starter prog..kommer der en dialogboks der spørger på makronavn."?? Den forstår jeg ikke helt.


Public Sub IndsaetKundeInfo: betyder bare, at nu vil du erklære en "offenlig" procedure som hedder IndsaetKundeInfo. En offenlig procedure betyder bare, at du kan kalde proceduren hvor som helst i dit dokument.

(intKundenr As Integer): betyder at proceduren har brug for et input. I dette tilfælde et kundernummer. Dette kaldes også en parameter. Du kan have mere end en parameter.

For at kalde en procedure skriver du først procedurens navn. Derefter skriver du det input proceduren skal have adskilt af et mellemrum. Hvis vi vil kalde proceduren med kundenummeret 258742 gør vi sådan her:

  IndsaetKundeInfo 258742

Inde i koden kan vi så hente den parameter ved at skrive dets navn. Det eksempel jeg gav dig overfor, bruger jeg parameteret til at hente data fra databasen, hvor kundernummeret indgår. Linjen

  strSQL = "SELECT Navn, Adresse FROM Tabel WHERE Kundenr = " & intKundenr

bliver derfor til

  strSQL = "SELECT Navn, Adresse FROM Tabel WHERE Kundenr = 258742"

når vi kalder proceduren sådan her

  IndsaetKundeInfo 258742


For at teste om proceduren virker, kan du i VBEditor trykke på Ctrl+G. Derefter kalder du bare proceduren sådan her:

  IndsaetKundeInfo 258742


Jeg håber, at det hjalp lidt på forståelsen. Jeg gik ud fra, at du kendte lidt til VBA. Hvis du er helt ny i VBA og du gerne vil lære at kode VBA, foreslår jeg at du starter med at læse http://www.vbatutor.com/vbatutor.htm eller køber denne bog http://www.cronberg.dk/vbabog.asp :)
Avatar billede BIRGER Seniormester
04. marts 2003 - 20:15 #8
hej igen

Nu har jeg har prøvet at "fange" kundenr via en inputbox, hvor man indtaster kundenr.. med udgangspunkt i din kode

Jeg får dog følgende fejlmsg... compile Error
invalid use of property  ved objrs i if sætningen

Jeg prøver at vedlægge kodningen!!

Sub IndsaetKundeInfo()
    Dim objConn As ADODB.Connection
    Dim objRs As ADODB.Recordset
    Dim strConnString As String
    Dim strSQL As String
    Dim Kundenr As Integer
Kundenr = InputBox("indtast kundenr")

    Set objConn = New ADODB.Connection
    Set objRs = New ADODB.Recordset
   
    strConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\kunder.MDb"
    objConn.Open strConnString
   
    strSQL = "SELECT Navn, Adresse FROM emner WHERE Kundenr = " & Kundenr
    objRs.Open strSQL, objConn
   
    If Not objRs.EOF Then
        Selection.Text "Kundenavn: " & objRs("Navn")
        Selection.Text "Adresse: " & objRs("Adresse")
    End If
   
    objRs.Close
    objConn.Close
End Sub
Avatar billede somaliomar Praktikant
04. marts 2003 - 20:52 #9
Prøv det her

    If Not objRs.EOF Then
        MsgBox "Kundenavn: " & objRs("Navn") & vbCrLf & _
              "Adresse: " & objRs("Adresse")
    End If

i stedet for

    If Not objRs.EOF Then
        Selection.Text "Kundenavn: " & objRs("Navn")
        Selection.Text "Adresse: " & objRs("Adresse")
    End If
Avatar billede BIRGER Seniormester
04. marts 2003 - 21:57 #10
hej hej

Nu funker det bare!!! der bliver vist de rigtige data i msgboxen......

Sidste er bare at navn og adresse indsættes som tekst i et felter..men burde de ikke i 1. version?

hilsen
Bjarne
Avatar billede somaliomar Praktikant
04. marts 2003 - 22:14 #11
Om teksten skal indsættes i Word-dokumentet er da op til dig. Det skal jeg ikke bestemme :)

Men du kan skrive noget tekst i dit Word-dokument sådan her:

  Selection.TypeText Text:="SKRIV NOGET I WORD-DOKUMENTET"

i dit tilfælde

    If Not objRs.EOF Then
        Selection.TypeText Text:="Kundenavn: " & objRs("Navn") & vbCrLf
        Selection.TypeText Text:="Adresse: " & objRs("Adresse") & vbCrLf
    End If
Avatar billede BIRGER Seniormester
04. marts 2003 - 22:27 #12
funker bare perfekt....tak for det

lige et sidste lille spørgsmål..Programmet kører perfect, men hvis jeg lukker word og gemmer det... og åbner det igen og kører prog..så kommer følgende fejlmed.... the macros in this projet are disabled(akiveXdata er krydset af)
smider jeg det over i et nyt doc. så kører det igen..?
Avatar billede somaliomar Praktikant
06. marts 2003 - 07:36 #13
<rip>

ISSUE
When you start or quit Microsoft Word 2002 you may receive one of the following messages:


"The macros in this project are disabled. Please refer to the online help or documentation of the host application to determine how to enable macros".
-or-
"The macro cannot be found or has been disabled because of your Macro security settings"

.
Additionally, one of these messages may appear when you perform common tasks, such as printing, saving, opening, or closing files.
These messages may appear even if you selected the Trust all installed add-ins and templates check box on the Trusted Sources tab of the Security dialog box.

NOTE : To access the Security dialog box in Word, point to Macros on the Tools menu, and then click Security .


CAUSE
This behavior occurs when Word macro security is set at the High security setting, and a Word add-in file contains a macro that is designed to run automatically.


RESULOTION

For details on how to resolve this issue please click on the following link:

http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q302632

</rip>
Avatar billede BIRGER Seniormester
06. marts 2003 - 13:15 #14
Jeg synes at jeg får en fejlmed.. run-time error '6' overflow, når jeg kører koden....har du erfaring med den?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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