Avatar billede tofferman Nybegynder
08. september 2006 - 10:11 Der er 7 kommentarer og
2 løsninger

Excel-fil lukkes ikke efter TransferSpreadsheet.

Hej.
Jeg har en lille database hvor jeg henter nogle data fra forskellige regneark med VB-funktionen TransforSpreadsheet.

Det fungerer også fint, men jeg har opdaget af regnearksfilerne er åbne når jeg har kørt funktionen.

Man kan ikke se det, for det vises ikke på hverken proceslinien eller noget andet sted, men når jeg lukker computeren ned efter en arbejdsdag spørger den om jeg vil gemme ændringer i de forskellige filer som jeg har hentet data fra.

Ligeledes kan andre heller ikke få skriveadgang til filerne når jeg har kørt min lille VB-procedure.

Hvordan sikrer jeg har filerne lukkes korrekt efter at jeg har læst fra dem med TransferSpreadsheet?
Avatar billede Slettet bruger
08. september 2006 - 10:13 #1
hvilken kode bruger du til at hente data!~)
Avatar billede tofferman Nybegynder
08. september 2006 - 10:15 #2
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "t_temp", sti, no, ugedag & "!I25:I25"
Avatar billede hnteknik Novice
08. september 2006 - 10:40 #3
Måske kan du gøre vha følgende modul:

Option Compare Database
Option Explicit

Public Sub TranferExcelWorkSheet(strSource As String, _
            strSheet As String, strTable As String)
'Requires a Reference to to Excel
'Requires this ErrorHandler
'Usage: Call TranferExcelWorkSheet("C:\2.xls", "Sheet3", "tblTest")
On Error GoTo ErrorHandler
Dim msExcel As Excel.Application
    Set msExcel = GetObject(Class:="Excel.Application")
    'msExcel.Visible = True 'If you want to see whats going on for testing
    msExcel.Visible = False
    msExcel.Workbooks.Open strSource
    ' What worksheet(tab) do you want active
    msExcel.Worksheets(strSheet).Activate
    ' OR -- not sure which is correct, both work!
    'msExcel.Sheets(strSheet).Activate
   
'You may need this first
'Save the current layout! Excel always remembers the last tab used.
    '    msExcel.ActiveWorkbook.Save
'You may need to close, to import data.
'You need to test this
    '    msExcel.ActiveWorkbook.Close
   
    ' Transfer the worksheet
'    DoCmd.TransferSpreadsheet acImport, 8, strTable, strSource, True, ""
    'Close the workbook
    msExcel.ActiveWorkbook.Close
    ' Close / Exit Excel
    msExcel.Quit
    Set msExcel = Nothing

Exit_TranferExcelWorkSheet:
Exit Sub

ErrorHandler:
    ' Create Excel for the first time if it is not active
    If Err.Number = 429 Then
        Set msExcel = CreateObject("Excel.Application")
        Err.Clear ' Clear Err object in case error occurred.
        Resume
    Else
    MsgBox Err.Number & " " & Err.Description, vbCritical, "Error"
    End If
    Resume Exit_TranferExcelWorkSheet

End Sub
Avatar billede Slettet bruger
08. september 2006 - 10:43 #4
eller...

Dim ExcelApp As Object
Dim Wbk As Object

Set ExcelApp = CreateObject("excel.application")
Set Wbk = ExcelApp.Workbooks.Open "Din.xls"


Kode


Wbk.Close
ExcelApp.Quit
Set Wbk=Nothing
Set ExcelApp=Nothing
Avatar billede Slettet bruger
08. september 2006 - 13:46 #5
weekend!~)
Avatar billede hnteknik Novice
08. september 2006 - 15:53 #6
Jeg er bange for det !!!!
Avatar billede tofferman Nybegynder
10. september 2006 - 01:45 #7
Ja, sorry. Jeg prøver det på mandag når jeg kommer på arbejde. Håber det er ok :)
Avatar billede tofferman Nybegynder
12. september 2006 - 13:07 #8
I får point for ulejligheden, men jeg er ikke helt sikker på at det var løsningen jeg søgte.

Jeg har rimeligt meget kode som skal laves om hvis jeg skal gøre det som I foreslår, og det kan jeg desværre ikke få tid til i øjeblikket.

Det er da lidt ringe at en funktion som transferSpreadsheet bare efterlader filen åben.
Avatar billede hnteknik Novice
12. september 2006 - 13:39 #9
Jeg kan da ikke se andet, end at du kan bruge subben blot du udvider med ugedag & "!I25:I25" som du sætter ind parameterlisten sm f.eks. en range ???

Begge svar lukker efter transaktionen msExcel.ActiveWorkbook.Close/Wbk.Close

Henrik
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