VBA FileDialog Access 2007

  • #1
M

Mr_Tom

Bekanntes Mitglied
Themenersteller
Dabei seit
06.04.2005
Beiträge
211
Reaktionspunkte
0
Hallo zusammen,

seit heute habe ich Office 2007 im Einsatz und nun funktionieren meine Prozeduren nicht mehr. Probleme habe ich speziell im Bereich FileDialog. Ich möchte alle *.csv Dateien aus einem bestimmten Ordner in eine Access Datenbank einlesen. Folgenden Code habe ich bisher dazu:

Code:
Option Compare Database
Option Explicit
Function Start_Import()
  Application.Run MehrereDateienImportierenV2
End Function
Sub MehrereDateienImportierenV2()

Const ZielTab = tab2010
  Dim oFileDialog As Office.FileDialog
  Set oFileDialog = Application.FileDialog(msoFileDialogFilePicker)
  With oFileDialog
    .Title = Dateien auswählen!
    .AllowMultiSelect = False
    .Filters.Add Nur CSV auswählen, *.csv
      
      Dim vItem As Variant
      For Each vItem In .SelectedItems
      
      EineTXTDateiEinlinkenUndAnfügen .SelectedItems(1), ZielTab
         
      Next
    End If
  End With



End Sub

Sub EineTXTDateiEinlinkenUndAnfügen(AktDatFullNam As String, _
                  ZielTab As String)
  Const TmpLink = TabtmpLink
  Const ImportSpez = Import_Spezifikation
 
  On Error Resume Next
  DoCmd.DeleteObject acTable, TmpLink
  On Error GoTo 0
  DoCmd.TransferText acLinkDelim, ImportSpez, TmpLink, AktDatFullNam
  
  CurrentDb.Execute INSERT INTO  & ZielTab & _
              SELECT  & TmpLink & .*  & _
               FROM  & TmpLink & ;
  CurrentDb.Execute DELETE *  & _
              FROM tab2010  & _
                WHERE Betrieb is null AND RgNummer is null
  DoCmd.DeleteObject acTable, TmpLink
End Sub

Wie kriege ich es hin, dass immer derselbe Pfad verwendet wird und für jede CSV Datei der Code von
Code:
Sub EineTXTDateiEinlinkenUndAnfügen(AktDatFullNam As String, _
                  ZielTab As String)
ausgeführt wird ...?

Brauche dringend Hilfe! Vielen Dank!
 
  • #2
Hallo Mr_Tom,

korrigier mal Sub MehrereDateienImportierenV2()
Code:
Sub MehrereDateienImportierenV2()

Const ZielTab = tab2010
  Dim oFileDialog As Office.FileDialog
  
  Set oFileDialog = Application.FileDialog(msoFileDialogFilePicker)
  With oFileDialog
    .Title = Dateien auswählen!
    .AllowMultiSelect = True
    .Filters.Add Nur CSV auswählen, *.csv
    If .Show = -1 Then
      Dim vItem As Variant, sItem As String
      For Each vItem In .SelectedItems
       sItem = vItem
       EineTXTDateiEinlinkenUndAnfügen sItem, ZielTab
      Next
    End If
  End With

AUFRAEUMEN:
 Set oFileDialog = Nothing
End Sub
Gruß Matjes :)
 
  • #3
Hallo Matjes :)

Vielen Dank, jedoch möchte ich die .show Abfrage nicht haben. Ich hätte den Pfad gern
statisch im Code, er ändert sich nie.

Kann man da noch etwas machen oder komme ich mit Office 2007 nicht um das .show herum?
 
  • #4
Hallo Mr_Tom,

du willst also eigentlich die Dateien nicht im Dialog auswählen, sondern statisch immer im gleichen Verzeichnis alle csv-Dateien verarbeiten ?

Gruß Matjes :)
 
  • #5
Matjes schrieb:
Hallo Mr_Tom,

du willst also eigentlich die Dateien nicht im Dialog auswählen, sondern statisch immer im gleichen Verzeichnis alle csv-Dateien verarbeiten ?

Gruß Matjes :)

Sorry wenn ich mich falsch ausgedrückt habe aber genau so meinte ich es :)
 
  • #6
Hallo Mr_Tom,

Dann probier mal diese Variante. Sie benutzt das FileSystemObject aus der Microsoft Scripting Runtime.
Dazu mußt du im VB-Editor unter Extras->Verweise->Microsoft Scripting Runtime einen Haken setzen.

Code:
Const sVerzeichnis = d:\Test
müßtest du noch deinen Gegebenheiten anpassen.

Gruß Matjes :)
Code:
Sub MehrereDateienImportierenV2()

'alle csv-Dateien des Verzeichnis

 Const ZielTab = tab2010
 Const sVerzeichnis = d:\Test

 Dim FSO As New Scripting.FileSystemObject->Erfordert Extras->Verweis->Microsoft Scripting Runtime
 Dim objD As Folder
 Dim objFile As File, objFiles As Files
 Set objD = FSO.GetFolder(sVerzeichnis)->Folder-Objekt erzeugen
 Set objFiles = objD.Files      ->Files-Objekt erzeugen

->Verzeichnis prüfen
 If Dir(sVerzeichnis, vbDirectory) =  Then
  MsgBox Verzeichnis  & sVerzeichnis & nicht vorhanden !
  GoTo AUFRAEUMEN
 End If

->Files im Verzeichnis feststellen
 Set objD = FSO.GetFolder(sVerzeichnis)->Folder-Objekt erzeugen
 Set objFiles = objD.Files      ->Files-Objekt erzeugen
 For Each objFile In objFiles
  If LCase(Right(objFile.Name, 4)) = .csv Then
   EineTXTDateiEinlinkenUndAnfügen objFile.Path, ZielTab
  End If
  Next
  
AUFRAEUMEN:
 Set FSO = Nothing: Set objD = Nothing: Set objFile = Nothing: Set objFiles = Nothing
End Sub
 
  • #7
Jetzt funktioniert es super!

Vielen Dank Matjes!
 
Thema:

VBA FileDialog Access 2007

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben