Accesből exportált adatok mentése Excelbe

Accesből exportált adatok mentése Excelbe
2011-01-12T23:47:39+01:00
2011-01-13T10:36:03+01:00
2022-11-20T11:45:37+01:00
_KGR_
Sziasztok,

Egy ADO-val exportált excel file mentésével lenne a problémám. A mentés másként sikerül, viszont az aktuális fileba (sima mentés)történő tárolást nem akarja végrehajtani. Ezekkel próbálkoztam:
M.saveas currentproject.path + "\Kivonat.xls" (ha más filenevet adok meg, akkor ez működik, de nekem fontos, hogy az eredeti file-ba történjen a mentés.

M.Save
M.Activeworkbook.save


Segítségnek itt a teljes kód:

Dim C As ADODB.Connection
Dim R As New ADODB.Recordset
Dim F As String
Dim M As Object
Dim n As Integer
Dim i As Integer


F = Application.CurrentProject.Path + "\Kivonatok.xls"
Set M = CreateObject("Excel.Sheet")
M.Application.workbooks.Open F
Set C = Application.CurrentProject.Connection
M.Application.Visible = True
R.Open "Kivonat_feltolto", C, adopenkeyset, adlockoptimistic

n = 1
Do
n = n + 1
Loop While M.Application.cells(n, 1) <> ""
n = n - 1

i = n + 1

Do While Not R.EOF

M.Application.cells(i, 1).Value = R![Bank neve]
M.Application.cells(i, 2).Value = R!Számlaszám
M.Application.cells(i, 3).Value = R!Dátum
M.Application.cells(i, 4).Value = R!Nyitó
M.Application.cells(i, 5).Value = R!Jóváírás
M.Application.cells(i, 6).Value = R!Terhelés
M.Application.cells(i, 7).Value = R!Záró
M.Application.cells(i, 8).Value = R!Deviza
M.Application.cells(i, 9).Value = R!Számlatípus
M.Application.cells(i, 10).Value = R!Bank


R.MoveNext
i = i + 1
Loop
R.Close
C.Close
Mutasd a teljes hozzászólást!
M.save

Csak munkalapnál elég érdekes, mert általában munkafüzetet mentesz.

Így az objektum inkább:

Set M = CreateObject("Excel.Application")

M.Application.workbooks.Open F
Helyett
M.workbooks.open F

M.Application.Visible = True
helyett
M.Visible = True

M.Application.cells(i, 1).Value = R![Bank neve]
helyett
M.activeworkbook.activesheet.cells(i, 1).Value = R![Bank neve]
vagy
M.activeworkbook.sheets(1).cells(i, 1).Value = R![Bank neve]
vagy
M.activeworkbook.sheets("lapneve").cells(i, 1).Value = R![Bank neve]

de inkább egy
with M.activeworkbook.active .cells(i,1)=R![Bank neve] end with
És akkor
M.activeworkbook.save



Mutasd a teljes hozzászólást!

  • ideiglenes megoldás:
    mentés másként után törlöd az eredetit, az újat meg átnevezed.

    Fájlok menedzselése:
    Set FSO = CreateObject("scripting.filesystemobject")
    a többit kidobja a gúgli.
    Mutasd a teljes hozzászólást!
  • M.save

    Csak munkalapnál elég érdekes, mert általában munkafüzetet mentesz.

    Így az objektum inkább:

    Set M = CreateObject("Excel.Application")

    M.Application.workbooks.Open F
    Helyett
    M.workbooks.open F

    M.Application.Visible = True
    helyett
    M.Visible = True

    M.Application.cells(i, 1).Value = R![Bank neve]
    helyett
    M.activeworkbook.activesheet.cells(i, 1).Value = R![Bank neve]
    vagy
    M.activeworkbook.sheets(1).cells(i, 1).Value = R![Bank neve]
    vagy
    M.activeworkbook.sheets("lapneve").cells(i, 1).Value = R![Bank neve]

    de inkább egy
    with M.activeworkbook.active .cells(i,1)=R![Bank neve] end with
    És akkor
    M.activeworkbook.save



    Mutasd a teljes hozzászólást!
  • with M.activeworkbook.active
    helyett
    with M.activeworkbook.activesheet
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd