19. november 2008 - 17:29Der er
27 kommentarer og 1 løsning
Luk Excel efter import
Hej jeg har en funktion som importerer noget data fra Excel og til en database. Det er lavet med et modul og en macro. Det jeg ønsker er bare at den lukker excel efter den er overført. Den åbner hver gang dataen er overført, ville ØNSKE den slet ikke åbnede. Er det muligt?
---------------- Kode: Sub Kommandoknap26_Click() Dim a As String Me.Kommandoknap26.HyperlinkAddress = LaunchCD(Me) Me.Tekst24 = Me.Kommandoknap26.HyperlinkAddress a = Me.Tekst24
DoCmd.DeleteObject acTable, "REPO-POS" DoCmd.TransferSpreadsheet acImport, 8, "REPO-POS", a, True, "A8:V900"
On Error Resume Next On Error GoTo 0
End Sub
---------------- Modul: Option Compare Database Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
Function LaunchCD(strform As Form) As String Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String OpenFile.lStructSize = Len(OpenFile) OpenFile.hwndOwner = strform.Hwnd sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _ "Excel Files (*.XLS)" & Chr(0) & "*.XLS" & Chr(0) OpenFile.lpstrFilter = sFilter OpenFile.nFilterIndex = 1 OpenFile.lpstrFile = String(257, 0) OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1 OpenFile.lpstrFileTitle = OpenFile.lpstrFile OpenFile.nMaxFileTitle = OpenFile.nMaxFile OpenFile.lpstrInitialDir = "C:\" OpenFile.lpstrTitle = "Vælg en fil og tryk på Åbn." OpenFile.flags = 0 lReturn = GetOpenFileName(OpenFile) If lReturn = 0 Then MsgBox "Manglende fil!", vbInformation, _ "Du har ikke valgt en fil fra Stifinderen." Else LaunchCD = Trim(OpenFile.lpstrFile) End If 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
Jeg har ikke nærlæst din kode, men jeg plejer at bruge denne for at importere regnearket på adressen D:\XP\Mappe1 til Access-tabellen import. Excel bliver IKKE åbnet:
Den skal importeres gennem en form i Access, som også fungerer fint, men når det er lykkes at få den importeret så åbnes den valgte fil.
Har for en sikkerhedsskyld prøvet din kode, og der får jeg bare fejl.
Som kan ses på koden, sletter den, den ekstisterende tabel først.
Sådan ser koden ud for kommandoknappen:
------------------------------------------------------- Sub Kommandoknap26_Click() Dim a As String Me.Kommandoknap26.HyperlinkAddress = LaunchCD(Me) Me.Tekst24 = Me.Kommandoknap26.HyperlinkAddress a = Me.Tekst24
On Error Resume Next DoCmd.DeleteObject acTable, "REPO-POS"
On Error GoTo 0 If Me.Tekst24 = "" Then MsgBox "Manglende fil!", vbInformation, _ "Du har ikke valgt en fil fra Stifinderen." Else: DoCmd.TransferSpreadsheet acExport, 8, "REPO-POS", a, False, "A8:V900" End If
End Sub -------------------------------------------------------
Korrekt - Så ret det til import. Denne er også afprøvet og importerer UDEN at åbne Excel. Prøv at nøjes med denne kode uden at åbne stifinderen. Få importen til at fungere, så kan du altid prøve med stifinderen senere:
a = InputBox(Prompt:="Indtast stien til Excel-arket.", Title:="Hvor ligger Excel-filen?", Default:="") DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, 0, "Importtest", a, False, "" MsgBox "Importen er udført."
Det virker fint med indputboxen, men hjælper stadig ikke, hvis jeg vil finde filen ved hjælp af mit stifindere modul. Så fejlen må skulle findes der. Det må være modulet der gør at den åbner filen efter import.
---------------------- KODE ----------- Option Compare Database Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
Function LaunchCD(strform As Form) As String Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String
I works now when i use yours, but just to another time, what do you mean with "Make sure that the property is empty (design mode) and then save you form."
terry Can i ask you one more time. It it about that database you sent me back. I dont now way, but i all the error message are gone and that i a problem on my if else statement.
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.