Avatar billede maxmull Nybegynder
04. december 2003 - 00:24 Der er 8 kommentarer og
1 løsning

Importer tekst filer med fortløbende nr

Jeg har en opgave hvor jeg skal importere nogle log filer der bliver genereret med fortløbende nr.
Jeg har lavet en Komandoknap med denne funktion:

Private Sub Kommandoknap0_Click()
DoCmd.TransferText acImportDelim, "Import_VPN", "log", "C:\logfiler\log00001.txt"
End Sub

Den virker fint men nu vil jeg så gerne kunne tage alle filer i biblioteket og importere dem. Efter end import skal filerne så flyttes til C:\logfiler\importeret\

Kan man det ?
Avatar billede maxmull Nybegynder
04. december 2003 - 12:51 #1
Flere point for et svar :-)
Avatar billede maxmull Nybegynder
04. december 2003 - 14:07 #2
Jeg er nu tæt på selv at have løst mit problem nu mangler jeg bare en kode stump der sætter filnavn ind fra en streng.
Jeg er ikke specielt god til VBA så lidt syntaks hjælp ville være godt.
Når jeg har en streng med værdien hvordan får jeg så værdien ind ?

DoCmd.TransferText acImportDelim, "Import_VPN", "log", "MyString"
Avatar billede terry Ekspert
04. december 2003 - 20:14 #3
not quite sure what you mean with "en kode stump der sætter filnavn ind fra en streng."!

This may give you some ideas!

DIM MyString as string
Dim MyCounter as integer

MyCounter = 1
MyString = "C:\logfiler\log" & Format(MyCounter, "00000") & ".txt"

DoCmd.TransferText acImportDelim, "Import_VPN", "log", MyString
Avatar billede maxmull Nybegynder
05. december 2003 - 00:48 #4
Hej Terry
Jeg har selv fundet en løsning. Ikke perfekt men ok.
Det jeg gør nu er at jeg bruger en fildialog til at finde den log fil jeg skal importere og så bruger jeg den streng som den laver til at sætte ind i import strengen.

Som her:
Private Sub Kommandoknap5_Click()
Dim strFilter As String
Dim strInputFileName As String

strFilter = ahtAddFilterItem(strFilter, "Tekst filer (*.TXT)", "*.TXT")
strInputFileName = ahtCommonFileOpenSave( _
                Filter:=strFilter, OpenFile:=True, _
                DialogTitle:="Please select an input file...", _
                Flags:=ahtOFN_HIDEREADONLY)

DoCmd.TransferText acImportDelim, "Import_VPN", "log", strInputFileName
MsgBox "Filen er nu importeret", vbOKOnly, "Import"

End Sub

Det jeg gerne ville var at min knap kunne finde alle txt filer i en mappe og importere dem. Når det var gjort skulle filerne så flyttes til en anden mappe.

Har du en ide til hvordan man kan gøre det ?
Avatar billede terry Ekspert
05. december 2003 - 13:31 #5
I'll take a look over the weekend, julefrokost i aften :o)
Avatar billede terry Ekspert
07. december 2003 - 12:38 #6
Hi maxmull>

Here you can find a API for browsing after a folder which conatins all of your files to import. http://www.mvps.org/access/api/api0002.htm
I see your example above comes from there too :o)

Place the code in a module and save it.

Now I have altered your code so that it uses the API to get a folder name, and then using the FileSystemObject I loop through all of the files in the folder. I am assuming that ALL files are to be imported!

Private Sub Kommandoknap5_Click()

'This line first calls BrowseFolder (http://www.mvps.org/access/api/api0002.htm)
'and then using the folder name we call ImportFiles

  ImportFiles(BrowseFolder("Choose a folder"))
  MsgBox "Filerne er nu importeret", vbOKOnly, "Import"

End Sub


Function ImportFiles(folder)
Dim fs, f, f1, fc, s
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folder)
    Set fc = f.Files
   
    'Assuming ALL files are to be imported. If not you need to remove those which you dont want.
    For Each f1 In fc
    DoCmd.TransferText acImportDelim, "Import_VPN", "log", folder & "\" & f1.name

    Next

End Function
Avatar billede terry Ekspert
07. december 2003 - 12:39 #7
NOTE: The Docmd.Transfertext  is NOT tested
Avatar billede maxmull Nybegynder
07. december 2003 - 23:40 #8
Tak for hjælpen:
Koden kom til at se sådan her ud:
Private Sub Kommandoknap5_Click()
'This line first calls BrowseFolder (http://www.mvps.org/access/api/api0002.htm)
'and then using the folder name we call ImportFiles

ImportFiles (BrowseFolder("Find mappen med logfiler"))
MsgBox "De nye logfiler er nu importeret", vbOKOnly, "Import"
End Sub

Function ImportFiles(folder)
Dim fs, f, f1, fc, s
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folder)
    Set fc = f.Files
   
    'Assuming ALL files are to be imported. If not you need to remove those which you dont want.
    For Each f1 In fc
    DoCmd.TransferText acImportDelim, "Import_VPN", "log", folder & "\" & f1.Name
    souceFile = folder & "\" & f1.Name
    destFile = folder & "\Importerede\" & f1.Name
    fs.CopyFile souceFile, destFile, True
    fs.deletefile souceFile
   
    Next
F_Logon.Requery
End Function

Og det virker helt perferkt.
Avatar billede terry Ekspert
08. december 2003 - 10:57 #9
super, og tak :o)
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