09. september 2008 - 10:04Der er
16 kommentarer og 2 løsninger
Accessrapport til Word
Hej alle
Jeg er ny her i foraet, men har allerede fået en del hjælp. Nu er jeg dog kørt fast. Jeg har en accessdatabase, hvor jeg er interesseret i at få noget af rapporten over i et worddokument. Rapportuddraget vælges ved hjælp af nogle combobokse i en formular.
Ved hjælp af nedenstående eksempel, som jeg har fundet her, kan jeg godt få tekstboksene over i min wordskabelon, men hvordan får jeg rapporten med ? evt som snapshot, så mine formaterineger etc. bevares ?
Private Sub Kommandoknap8_Click() On Error GoTo Err_Kommandoknap8_Click
Dim objword As New Word.Application Dim worddoc As New Word.Document
Set worddoc = objword.Documents.Add("h:\Dokumenter\Acces_SAP\Bogmærketest2.dot")
Public Function InsertAtBookmark(objWordDoc As Word.Document, _ strBookmark As String, strText As String) As Boolean With objWordDoc.Bookmarks If .Exists(strBookmark) Then .Item(strBookmark).Range.Text = strText InsertAtBookmark = True End If End With End Function
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Mine data fra Access til en given excel-rapportpakke fås som hovedregel fra een eller flere forespørgsler. Resultatet af disse kopieres over til et allerede oprettet regneark, hvori dette placeres i et nærmere defineret celleområde.
Eksempel :
Public Function sCopyRSToNamedRange_001() 'Copy Arrival_5_Weeks_1 records to a named range 'on an existing worksheet on a workbook
Dim objXL As Excel.Application Dim objWkb As Excel.Workbook Dim objSht As Excel.Worksheet Dim db As Database Dim rs As Recordset
Set db = CurrentDb Set objXL = New Excel.Application Set rs = db.OpenRecordset("Arrival_5_Weeks_1") With objXL .Visible = False Set objWkb = .Workbooks.Open(conWKB_NAME) On Error Resume Next Set objSht = objWkb.Worksheets(conSHT_NAME) If Not Err.Number = 0 Then Set objSht = objWkb.Worksheets.Add objSht.Name = conSHT_NAME End If Err.Clear On Error GoTo 0 objSht.Range(conRANGE).CopyFromRecordset rs
objWkb.Close SaveChanges:=True objXL.Quit
End With
Set objSht = Nothing Set objWkb = Nothing Set objXL = Nothing Set rs = Nothing Set db = Nothing
Øh det er jeg ikke helt sikker på at jeg forstår, det med records har jeg ikke helt styr på endnu. Men jeg kan sagtens finde ud af, at få mine data over i excel. Men hvordan laver du selve rapporten i excel, altså den givne rapportpakke du nævner ? (nu er vi vist i den forkerte kategori)
I eksemplet vist, har jeg en rapport benævnt "Short Term Bookings", svarende til navnet på arkfanen i regnearket ManagementFlash.xls.
I celleområdet A1 til Í121 har jeg min skabelon opbygget ( det som slutbrugeren ser ), og i et skjult område af regnearket, A131 - I159 indsættes data fra Access ved hjælp af funktionen i Access.
Herefter benytter jeg enten regneregler som VLookup() eller direkte henvisninger til dette skjulte område direkte i regnearket
Nu har jeg jo en god rapport i Access, som jeg sagtens kan eksportere fra, den mangler bare lidt i form af et word-sidehovede. Når jeg eksporterer den til word (.rtf format kan sagtens bruges, og det SKAL over i word), vil jeg gerne have den ind i en .dot fil, men hvis jeg bruger nedenstående overskriver den jo bare min .dot fil. Kan det ikke tilrettes lidt så den bruger .dot filen efter hensigten, og man så selv bestemmer hvor det skal gemmes.
Den tager faktisk tekstformateringen med over, men ikke streger, rammer, baggrundsfarver etc., det kan jeg godt leve med, i det aktuelle tilfælde. Men jeg vil stadig gerne have det proppet ind i en word-skabelon, som har et sidehovede, hvor jeg kan bruge bogmærkerne, og hvor jeg kan angive udgavenr. Worddokumentet vil altid kun være et uddrag af rapporten.
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.