08. september 2006 - 10:11Der 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?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
Synes godt om
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
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
Synes godt om
Ny brugerNybegynder
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.