Avatar billede jean01ad Praktikant
27. april 2010 - 13:56 Der er 16 kommentarer og
1 løsning

Eksport til excel

Jeg har ved hjælp af formel fra MUGS, fået følgende VBA kode der overfører data til et excelark.

Problemet er, at WKS danner en ny workbook hver gang.
Jeg ville rigtig gerne, at det var nedenstående fil, der blev åbnet og indlæst data i. Er det nogen der kan hjælpe mig, så koden reflekterer det?


'xls.Workbooks.Open fileName:="C:\Documents and Settings\jna\Dokumenter\Forcast_Budget_2010.2011\Oplæg1.xls"



Private Sub Kommandoknap13_Click()
Dim Obvar As Object, wkb As Object, Rst As Recordset ' Variabelerklæringer
Dim i As Integer, Felt1 As Integer, Felt2 As Integer, Tek As String
Dim xls As New Excel.Application

On Error GoTo Errorhandler
DoCmd.SetWarnings False
Forespørgsel1 over i den temporære tabel
DoCmd.OpenQuery "tilføjtemp"
Me.Refresh
Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset("temp", dbOpenTable)
Set Obvar = CreateObject("excel.application")
Obvar.Visible = True
Set wkb = Obvar.Workbooks.Add

'xls.Visible = True
'xls.Workbooks.Open fileName:="C:\Documents and Settings\jna\Dokumenter\Forcast_Budget_2010.2011\Oplæg1.xls"

wkb.Worksheets("Med").Cells(1, 1).Value = "Afdelingsnummer"
wkb.Worksheets("Med").Cells(3, 2).Value = "Initialer"
wkb.Worksheets("Med").Cells(3, 3).Value = "Bærer"
wkb.Worksheets("Med").Cells(3, 4).Value = "Startdato"
wkb.Worksheets("Med").Cells(3, 5).Value = "Slutdato"
wkb.Worksheets("Med").Cells(3, 5).Value = "Beløb"

For i = 2 To Rst.RecordCount + 1
wkb.Worksheets("Med").Cells(i, 1).Value = Str$(Rst.Fields![Afdelingsnummer])
wkb.Worksheets("Med").Cells(i, 2).Value = Format(Rst.Fields![Initialer])
wkb.Worksheets("Med").Cells(i, 3).Value = Format(Rst.Fields![Bærer])
wkb.Worksheets("Med").Cells(i, 4).Value = Str$(Rst.Fields![Startdato])
wkb.Worksheets("Med").Cells(i, 5).Value = Str$(Rst.Fields![Slutdato])
wkb.Worksheets("Med").Cells(i, 6).Value = Str$(Rst.Fields![SumOfBeløb])

Rst.MoveNext
Next
wkb.Worksheets("Ark1").UsedRange.Columns.AutoFit
Set Obvar = Nothing
DoCmd.OpenQuery "slettemp"
DoCmd.SetWarnings True
Errorhandler:
If Err.Number = 94 Then
Resume Next
End If
End Sub
Avatar billede hugopedersen Nybegynder
27. april 2010 - 18:50 #1
Jeg bruger noget kode der ligner nedenstående og det åbner fint et ark som template.
Jeg bruger det fordi det er meget nemmere at lave diagrammer i Excel end i Access :-)
Hvis du vil undgå flimmer på skærmen mens du sætter tal ind, så brug objExcelApp.ScreenUpdating = False men husk at slå det til igen inden en evt. udskrift. Det giver så også den fordel at alting går hurtigere da Excel ikke genberegner hele tiden.


Dim objExcelApp As Object
Dim objExcelDoc As Object

Set objExcelApp = CreateObject("excel.application")
Set objExcelDoc = objExcelApp.Workbooks.Add(strTemplate & "")
objExcelApp.visible = True

objExcelDoc.Sheets(1).Range("A1").Value = strHeader

If Not (objExcelApp Is Nothing) Then objExcelApp.Quit
Set objExcelDoc = Nothing
Set objExcelApp = Nothing
Avatar billede jean01ad Praktikant
28. april 2010 - 10:57 #2
Hmm Jeg kan ikke se, hvordan den giver mig mulighed for at åbne et specifikt regneark der eksempelvis kunne hedde:

'xls.Workbooks.Open fileName:="C:\Documents and Settings\jna\Dokumenter\Forcast_Budget_2010.2011\Oplæg1.xls"

Det jeg har brug for, er at ovenstående ark åbnes, og at min forespørgsel eksporteres til den.

Det kan godt være at jeg blot ikke forstå dit svar - men er du så ikke rar at uddybe?

Jesper
Avatar billede hugopedersen Nybegynder
28. april 2010 - 13:00 #3
(strTemplate & "") er navnet på et eksisterende ark som du åbner og smider data over i.

objExcelDoc.Sheets(1).Range("A1").Value = strHeader
Skifter du ud med din egen loop til at fylde data ind.
Avatar billede hugopedersen Nybegynder
28. april 2010 - 13:01 #4
Ellers send mig evt. en fil med din tabel/query og den Excel fil det skal over i. Så skal jeg prøve at lave koden så det virker på dine data.
Avatar billede jean01ad Praktikant
28. april 2010 - 13:24 #5
Du må meget gerne prøve at kigge på det.

Jeg hvilken mail skal jeg sende til?

Jean
Avatar billede hugopedersen Nybegynder
28. april 2010 - 13:34 #6
oz8hp  snabelting  hotmail  punktum  com
Avatar billede jean01ad Praktikant
28. april 2010 - 13:36 #7
He he
mener du oz8hp@hotmail.com ?
Avatar billede hugopedersen Nybegynder
28. april 2010 - 13:48 #8
Nemlig - det er fordi hvis man skriver det korrekt på nogle sites, så får mailgrabbere adgang til det og jeg synes jeg får rigeligt med underlige mails.
Avatar billede hugopedersen Nybegynder
28. april 2010 - 15:00 #9
Fil modtaget og rettet og returneret.

PS: gør dig selv en tjeneste og brug DAO istedet for ADO - det er meget medre når du nu skal opgradere til MS SQL en gang. Der virker DAO nemlig ikke.
Avatar billede hugopedersen Nybegynder
29. april 2010 - 10:13 #10
Fik du det til at virke efter hensigten?
Avatar billede jean01ad Praktikant
29. april 2010 - 10:31 #11
Hejsa

Tusind tak for det - jeg må erkende, at jeg ikke har nået at kigge på det endnu. Håber på at få det gjort over middag - og så skal jeg selvfølgelig nok give en hurtig tilbagemelding

Jean
Avatar billede jean01ad Praktikant
29. april 2010 - 12:02 #12
Hej Huggo

Det virker lige efter hensigten, og ved at kombinere de to koder en lille smule, så bliver det perfekt.

Tusind tak for din fornemme hjælp - smid et svar, så er der afgjort point.

Jean
Avatar billede jean01ad Praktikant
29. april 2010 - 13:13 #13
Og dog...

Når jeg kopiere makroen over i den fulde DB, og prøver at kører den så får jeg en fejl på

Dim rst As New ADODB.Recordset
her skriver den" Userde - fined type not defined"

Hvorfor gør den pludselig det?
Avatar billede hugopedersen Nybegynder
29. april 2010 - 14:07 #14
Det er fordi du mangler en reference til ActiveX Data Objects - er jeg 99.999% sikker på. Jeg bruger altid ADO da det virker på MS SQL
Avatar billede hugopedersen Nybegynder
29. april 2010 - 14:08 #15
PS: hvad var det der skulle kombineres af koden?
Avatar billede jean01ad Praktikant
29. april 2010 - 14:17 #16
Helt rigtig med referencen...Tak, nu virker det :-)

Jeg har såmænd bare lagt tilføj/slet temp forespørgslerne ind, da jeg ellers ville få mange gentagelser...Ingenting stort - så din hjælp har været helt perfekt...

Tusind tak - point er på vej

Jean
Avatar billede hugopedersen Nybegynder
29. april 2010 - 14:24 #17
OK - det havde jeg ikke lige set at du gjorde i den oprindelige kode :-)

Altid glad for at kunne hjælpe - spørg bare en anden gang.
Jeg arbejder p.t. med statestik fra en MySQL db med > 9.000.000.000 records som jeg laver forskellige rapporter i Excel via Access.
Der bliver også lavet nogle PDF'er som mailes til udvalgte medarbejdere.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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