Avatar billede maria.cand Nybegynder
11. oktober 2004 - 13:33 Der er 29 kommentarer og
1 løsning

Import funktion

Jeg har problemer med at anvende den allerede eksisterende guide til import i access - den findes simpelthen ikke.

Kan man via kode selv opbygge sådan en guide?

Jeg skal udelukkende kunne importere excel filer - JEg skal selv bestemme i hvilken tabel jeg vil placere dem i - da dette kan variere!! Nogle som kan hjælpe mig med sådan??
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 13:54 #1
DEt er guiden importer regne ark jeg mangler
Avatar billede overchord Nybegynder
11. oktober 2004 - 14:02 #2
Faar du fejl naar du proever at importere? og i saa fald hvilke?
Problemet er at man godt kan bygge en ny via kode, men hvis der f.eks er noget grundlaeggende galt i office installationen vil det nok ikke fungere alligevel - saa det er bedst at faa det checket foerst :-)
Avatar billede overchord Nybegynder
11. oktober 2004 - 14:10 #3
Hvad sker der f.eks naar du hoejre-klikker i tabel visningen og vaelger import, og derefter vaelg Microsoft excel i filtype i den "Aabn fil" box der vises?
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 14:12 #4
Det er vigtigt at påpege at systemet kørere på en Access 2003 runtime version - Men den skriver at Guiden importer regneark ikke er i registeringsdatabasen -
Avatar billede mugs Novice
11. oktober 2004 - 14:52 #5
Jeg kender absolut intet til Runtime versioner. Men prøv om du kna bruge denne, som er en importfunktion jeg plejer at anvende:

DoCmd.TransferSpreadsheet acImport, 0, "Import", "D:\XP\Mappe1", True, ""
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 14:59 #6
Mugs den dur desværre ikke - som sagt skal jeg kunne vælge hvor arket skal hen - Altså hvilken tabel jeg vil tilføje det til -Og jeg skal også have en open form hvor jeg kan angive hvilken fil jeg vil importere!!
Avatar billede mugs Novice
11. oktober 2004 - 15:05 #7
Excel data kommer til at ligge i tabellen import. Du kan blot udskifte det med et andet tabelnavn. I dette eksempel kan du selv vælge hvilken Excel-fil du vil importere fra, blot du indtaster stien i Inputboksen:

Dim a As String
a = InputBox(Prompt:="Indtast stien til Excel-arket.", Title:="Hvor ligger Excel-filen?", Default:="")
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acImport, 0, "Import", a, True, ""
MsgBox "Importen er udført."

Evt. kan du lege med en makro og benyt handlingen OverførRegneark
Avatar billede overchord Nybegynder
11. oktober 2004 - 15:36 #8
1. For lige at faa det paa det klare - kan du overhovedet importere Excel-filer? Hvis du afproever mugs' kode virker den saa? Der kan vaere problemer med nogle af office-driverne
2. Fremfor at bruge en input-box til sti-angivelse til filer vil jeg anbefale at du smider koden fra linket erunder i et modul i din DB. Herefter kna du altid kalde GetOpenFile. Koden findes paa: http://www.mvps.org/access/api/api0001.htm
3. Det bliver ret svedigt at kode en guiden import af regneark helt fra bunden hvis du har brug for at kunne give fejlmeddelelser paa fejl i struktur af regneark osv.
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 15:51 #9
JA jeg kan godt importere fra excel - Men jeg kan ikke bruge min guide - derfor vil jeg gerne selv lave en funtion hvor jeg importere data!!
Avatar billede mugs Novice
11. oktober 2004 - 15:55 #10
Fungerer min kode?
Har du i det hele taget slået dine guider til?
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:00 #11
Ja de står ikke som deaktivede - men igen jeg køre jo på en runtime 2003 - men mine guider skulle alligevel virke for min version 2000 jeg har i systemet!
Avatar billede mugs Novice
11. oktober 2004 - 16:02 #12
Har du prøvet min kode og fungerer den?
I benægtende fald, får du nogen fejl og hvilken?
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:05 #13
Din kode virker fint - og nej jeg får ingen fejl - Men det er bare ikke sådan at jeg vil have import funktionen! MAn skal både vælge hvor man vil placere data og hvor de skal tages fra ved at få lovat gennemse;-)
Avatar billede mugs Novice
11. oktober 2004 - 16:07 #14
Mener du en funktion der starter stifinderen og så vil du importere fra den valgte fil.
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:11 #15
jep - men jeg også have mulighed for at fortælle i hvilken tabel jeg vil importere min data til!!
Avatar billede mugs Novice
11. oktober 2004 - 16:18 #16
Kopier dette ind i et modul:

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) & _
"JPG Files (*.JPG)" & Chr(0) & "*.JPG" & 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:\Billede"
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

Og denne til en kommandoknap:

Dim a As String
Me.Kommandoknap26.HyperlinkAddress = LaunchCD(Me)
Me.Tekst24 = Me.Kommandoknap26.HyperlinkAddress
a = Me.Tekst24
DoCmd.TransferSpreadsheet acImport, 0, "Import1", a, True, ""
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:28 #17
Dim a As String
Me.Kommandoknap26.HyperlinkAddress = LaunchCD(Me)
Me.Tekst24 = Me.Kommandoknap26.HyperlinkAddress
a = Me.Tekst24
DoCmd.TransferSpreadsheet acImport, 0, "Import1", a, True, ""

Hvad er me.tekst
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:30 #18
den debugger i koden ved "Dim OpenFile As OPENFILENAME"
Avatar billede mugs Novice
11. oktober 2004 - 16:32 #19
Me.Tekst24 er en tekstboks i din formular.
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:35 #20
Ok det har jeg også lavet det som  - men alligevel debugger den i "lpstrFileTitle As String"

og "Dim OpenFile As OPENFILENAME"
Avatar billede mugs Novice
11. oktober 2004 - 16:36 #21
Jeg kan ikke sige hvorfor den fejler. Jeg har lige afprøvet min kode igen, og den fungerer perfekt.
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 16:36 #22
Stament outside the typeblock
Avatar billede mugs Novice
11. oktober 2004 - 16:36 #23
Får du nogen fejlmeddelelse?
Avatar billede mugs Novice
11. oktober 2004 - 16:39 #24
Så tror jeg, at dit modul er forkert. Bemærk at 1. del af koden er indsat under Generals Declaration:

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


Dette skal i en funktion i samme modul:

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) & _
"JPG Files (*.JPG)" & Chr(0) & "*.JPG" & 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:\Billede"
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 maria.cand Nybegynder
11. oktober 2004 - 16:56 #25
Denne funktioner virker helt perfekt Mugs - Kan man angive om den skal sortere dubletter fra??
Avatar billede mugs Novice
11. oktober 2004 - 17:15 #26
Du kan ikke i importen angive, at dubletter skal frasorteres. Men lav din import til en temporær tabel, og i en sådan kan du manipulere med data. Når data er rensede, kan du så smide dem over i den rigtige tabel.
Avatar billede maria.cand Nybegynder
11. oktober 2004 - 17:30 #27
ok tak!!
Avatar billede mugs Novice
11. oktober 2004 - 17:33 #28
Ligeledes bør du nok ændre disse linier:

sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)

Til kun at hente Excel-filer (.xls)
Avatar billede mugs Novice
11. oktober 2004 - 17:35 #29
I slutningen af koden kan du så slette den temporære tabel:

DoCmd.DeleteObject acTable, "Tabel1"

Den har du vel ikke noget at bruge til mere.
Avatar billede maria.cand Nybegynder
12. oktober 2004 - 09:19 #30
Hmm kan du skrive koden ud i et som den skal være??
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