Avatar billede andersbl Nybegynder
19. november 2008 - 17:29 Der 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
Avatar billede terry Ekspert
19. november 2008 - 18:04 #1
I see no code which should open Excel, are you sure that you show all the code?

The code which imports the .xls file doesnt even need Excel to be on the PC, so I see no reason why Excel opens.
Avatar billede terry Ekspert
19. november 2008 - 18:05 #2
Maybe you can send an example of the dB?

ekspertenATsanthell.dk

AT=@
Avatar billede mugs Novice
19. november 2008 - 18:46 #3
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:

DoCmd.TransferSpreadsheet acExport, 8, "import", "D:\XP\Mappe1", False, ""
Avatar billede andersbl Nybegynder
24. november 2008 - 12:42 #4
Jeg kan ikke sende min DB dadet er fortrolige oplysninger den indeholder.
Avatar billede terry Ekspert
24. november 2008 - 12:51 #5
is it possible to send an example, just with what is needed? Otherwise its not easy to help.
Avatar billede andersbl Nybegynder
24. november 2008 - 12:58 #6
TIL mugs.
Hele den kode jeg har skrevet i mit spørgsmål, er en kode som DU faktisk har uploadet ud på nettet for et stykke tid siden.

Den kode du har givet mig, ændre intet. Dokumentet bliver stadigvæk åbnetl. Desværre
Avatar billede mugs Novice
24. november 2008 - 13:05 #7
OK - Der er løbet en del vand på stranden siden da.
Koden gør dig i stand til at udpege en fil i stifindrren og importere den.

Denne:

DoCmd.TransferSpreadsheet acExport, 8, "import", "D:\XP\Mappe1", False, ""

Importerer en Excelfil UDEN at åbne Excel. Prøv den!

Skal du importere forskellige excelfiler, kan det gøres med en inputbox, hvor du dkriver sti / navn på den ønskede Excel
Avatar billede andersbl Nybegynder
24. november 2008 - 13:44 #8
Selv om jeg ikke er den bedste til VBA, så er jeg ret overbevist om at den kode  her:

DoCmd.TransferSpreadsheet acExport, 8, "import", "D:\XP\Mappe1", False, ""

Eksporterer.

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
-------------------------------------------------------
Avatar billede mugs Novice
24. november 2008 - 14:18 #9
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."
Avatar billede andersbl Nybegynder
24. november 2008 - 14:57 #10
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

OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.Hwnd
sFilter = "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)

LaunchCD = Trim(OpenFile.lpstrFile)

   
End Function
Avatar billede andersbl Nybegynder
01. december 2008 - 08:03 #11
Jeg prøver at lukke det her spøgsmål, da der er ingen der kan give svar.
Avatar billede terry Ekspert
01. december 2008 - 11:26 #12
24/11-2008 12:51:05
Avatar billede andersbl Nybegynder
01. december 2008 - 12:20 #13
Sorry terry, but that i not possible because it is confidential data.
Avatar billede terry Ekspert
01. december 2008 - 13:40 #14
You could send me the code which your having problems with, and any old XLS file
Avatar billede andersbl Nybegynder
03. december 2008 - 14:45 #15
Okay...
What is your email and i will sent it to you. Thanks alot :)
Avatar billede terry Ekspert
03. december 2008 - 14:52 #16
ekspertenATsanthell.dk
AT=@
Avatar billede andersbl Nybegynder
03. december 2008 - 15:01 #17
i have sent you a email
Avatar billede andersbl Nybegynder
05. december 2008 - 10:23 #18
I have sent the file zippet to you.
Avatar billede andersbl Nybegynder
05. december 2008 - 11:23 #19
an now also a excel file
Avatar billede terry Ekspert
05. december 2008 - 11:47 #20
Problem is these lines of code

Me.Kommandoknap26.HyperlinkAddress = LaunchCD(Me)
Me.Tekst24 = Me.Kommandoknap26.HyperlinkAddress
a = Me.Tekst24

Changed to
Me.Tekst24 = LaunchCD(Me)
a = Me.Tekst24


If the HyperlinkAddress contains for example a path/filename then it trieds to open it.
Avatar billede terry Ekspert
05. december 2008 - 11:48 #21
Make sure that the property is empty (design mode) and then save you form.
Avatar billede andersbl Nybegynder
05. december 2008 - 13:23 #22
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."

Thanks
Avatar billede andersbl Nybegynder
05. december 2008 - 13:23 #23
please place a answar so you can get your point :)
Avatar billede terry Ekspert
05. december 2008 - 13:30 #24
:o)
Avatar billede andersbl Nybegynder
05. december 2008 - 13:44 #25
that is not a answar, terry. Set det bullet in "svar"
Avatar billede terry Ekspert
07. december 2008 - 17:38 #26
:o)
Avatar billede andersbl Nybegynder
12. december 2008 - 11:31 #27
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.
Avatar billede terry Ekspert
16. december 2008 - 08:14 #28
Did you get th email I sent?
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