TransferSpreadsheet voor .csv

Status
Niet open voor verdere reacties.

BartSr

Gebruiker
Lid geworden
26 aug 2008
Berichten
240
Ik gebruik onderstaande importsub voor .exe bestanden:
Code:
Public Sub TRANSFERSPREADSHEEET()
Dim strFileName As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFilePicker)

With dlg
.Title = "Zoek het Excel bestand dat je wilt"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xls", 1

.Filters.Add "All Files", "*.*", 2

If .Show = -1 Then
strFileName = .SelectedItems(1)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "import", strFileName, True
Else
Exit Sub
End If
End With
End Sub
Maar nu zoek ik iets dergelijks voor het importeren van .csv bestanden. wie weet raad?
Bart
 
Ik zou zeggen TransferText.
Code:
Public Function fTransferCSV()
Dim strFileName As String
Dim dlg As FileDialog

    Set dlg = Application.FileDialog(msoFileDialogFilePicker)
    With dlg
        .Title = "Zoek het Excel bestand dat je wilt"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Excel Files", "*.xls", 1
        .Filters.Add "CSV Files", "*.csv", 2
        If .Show = -1 Then
            strFileName = .SelectedItems(1)
            DoCmd.TransferText acImport, , "import", strFileName, True
        Else
            Exit Function
        End If
    End With
End Function
 
Je kunt eventueel eerst een handmatige import doen, zodat je via <Geavanceerd> een importspecificatie kan maken en opslaan. Die kun je dan vervolgens bij de importfunctie gebruiken om de data correct te importeren.
 
Hallo Octafish,
Een kleine correctie:
De regel .Filters.Add "Excel Files", "*.xls", 1 moet uit fTransferCSV() worden verwijderd, want dat werkt niet
 
Nu zie ik dat er, naast de gewenste tabel, ook ongewenst bij elke import een extra tabel ontstaat met de naam tabelnaam-importfouten . Hoe voorkom ik dit?
 
Die tabel krijg je uiteraard niet als er geen importfouten zijn. Ik zou die tabel in ieder geval bekijken om te zien wat voor soort fouten dat zijn. Een veel voorkomende is: een tekstveld gebruiken voor een Informatieveld, i.p.v. een memoveld. De tekst uit dat veld wordt dan afgekapt, en dat leidt tot een foutmelding. Kijk dus de importspecificatie goed na en verbeter de velden waar je de fouten op krijgt, en importeer dan opnieuw. Net zo lang tot er geen importfouten meer zijn. Dat is ook de reden dat ik meestal met importspecificaties werk, omdat je dan heel gericht velden kunt inrichten.
 
Even terugkomend op mijn opmerking over ontstaande extra tabellen met fouten:
Deze ontstaan, heb ik ontdekt, alleen als je de origineel ontststane tabel laat bestaan.
Dus laat de tabel na uitlezen niet bestaan, maar eindig de procedure waarin de tabel "import" is ontstaan als volgt:
Code:
DoCmd.DeleteObject acTable, "Import"
End Sub
 
Ik maak een importtabel altijd eerst leeg, voordat ik erin importeer. Overigens herken ik het probleem zoals jij beschrijft niet; bij mij wordt de importtabel gewoon overschreven zonder dus eerst te hoeven verwijderen. Dat mág uiteraard wel :). Let wel op dat je db dan hard groeit, als je niet óók Comprimeert en herstelt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan