• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

bij importeren worden de datum niet goed geimporteerd

Status
Niet open voor verdere reacties.

gober

Gebruiker
Lid geworden
12 feb 2016
Berichten
133
onderstaande module gebruik ik om gegevens te importeren en te sorteren. Dit gaat goed. Echter niet alle datums worden goed geimporteerd, maar als amerikaanse notatie. Hoe krijg ik de (geboorte) datums toch goed geimporteerd?
de geboortedatums staan in kolom M. De kolommen staan ingesteld op datums.




Code:
Sub importensort()
On Error GoTo getout
With Application
 
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .DisplayAlerts = False
 

End With

Worksheets("importblad").Unprotect
MsgBox "plaats het te importeren bestand in de actieve directory en noem het 'ledenlijst dle.xlsx'", , "Welkom " & Application.UserName
Application.StatusBar = "Bezig met importeren van de Leden"
' Plaats hier je code
    Worksheets("importblad").Range("Blad1").Select
    Selection.ClearContents
    Range("A2").Select
    Workbooks.Open Filename:=ThisWorkbook.Path & "\ledenlijst dle.xlsx"
    Range("Tabel1").Select
    Selection.Copy
    ActiveWindow.Close
    Range("A2").Select
    ActiveSheet.Paste
    Range("A2").Select
    
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[POSTCODE]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[HUISNUMMER]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[TOEVOEGING]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[HOOFDBEW]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[NAAM]"), SortOn:=xlSortOnValues, Order:= _
        xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[MEDEBEW]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort.SortFields. _
        Add Key:=Range("Blad1[LIDNR]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("importblad").ListObjects("Blad1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    With Application
 
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Calculate
End With

    Application.StatusBar = False
    Worksheets("importblad").Protect
    Exit Sub
getout: MsgBox "er is een fout opgetreden. Is de file naam wel juist? en in de goede directoy? ", , "Welkom " & Application.UserName
End Sub
 
Misschien wel handig om 'ledenlijst dle.xlsx' even te plaatsen? En ja zonder gevoelige informatie.
 
De kolommen staan ingesteld op datums.

Dat zegt niet over het daarbij aangegeven datumformat (in het celeigenschappen vak wordt dat, bij Datum, "Type" genoemd). Dus een schermafdruk van die instelling kan misschien duidelijk maken waarom nu USA geformatteerde datums verschijnen (of mogelijk zie je het zelf al etc.)

Tijs.
 
Laatst bewerkt:
bedankt voor jullie bericht. Zal na het weekeinde de bestanden even plaatsen. Momenteel nog even geen tijd om ze te plaatsen.
 
Workbooks.Open Filename:=ThisWorkbook.Path & "\ledenlijst dle.xlsx", Local:=True

Met een beetje mazzel lost dit je probleem op....
 
@ginger. Dit werkt jammer genoeg niet. Heb ook via google naar oplossingen gezocht zoals aanvinken datum systeem 1904. Ook dat werkt niet.
Heb nu de bestanden toegevoegd. 2 bestanden. Het toe te voegen bestand en het bestand waar de import in moet komen. De datums waarbij het fout gaat heb ik groen gekleurd.

B.V.D. Gober.

Bekijk bijlage leden brieven.xlsmBekijk bijlage ledenlijst dle.xlsx
 
Ik heb nieuws voor je: bij mij staat er gewoon NL datumnotatie in kolom M, ook na het klikken op de import-knop.
Dus ligt het aan je Windows instellingen dat de Amerikaanse notatie wordt getoond

Dus..... [Windows-toets]+R toetscombinatie -> intl.cpl
Specifiek in het eerste tabblad: "Notatie" op "Nederlands (Nederland)" zetten.

Had je een reden om (op dit moment) van Nederlands af te wijken?

Tijs.
 
heb de instellingen niet gewijzigd. zie bijgevoegde afbeelding.
Kan het ook aan de excel versie liggen?
ik maak gebruik van excel 2016 64 bit.

2017-07-01.png
 
Doe me een lol, en zet 'm (voor de zekerheid) toch even vast op "Nederlands (Nederland)", want bij mij veranderde de weergave van kolom M in Excel meteen toen ik Engels (Verenigde Staten) daar instelde...

Tijs.
 
Laatst bewerkt:
Ik heb hem vast op nederlands gezet. Ook dan gaat het importeren niet goed.
Wel heb ik gemerkt als ik in het oorspronkelijke bestand de datum weergave aanpas van:
8-2-1991 Naar: 8-feb-1991 dan gaat het importeren wel goed.
Excel meldt zelf ook dat bij celeigenschappen een * voor de datum staat, dat dan datum aangepast wordt aan de systeeminstellingen van windows, anders niet.
Als ik echter eerst de datum instelling aan moet passen in het oorspronkelijke bestand, dan werkt dit fouten in de hand.
 
Misschien moet je eerst even bij het begin beginnen? De vraag heeft ook niets met het importeren van een bestand te maken.

Code:
Sub VenA()
With Sheets("importblad").ListObjects(1)
  If .ListRows.Count > 0 Then .DataBodyRange.Rows.Delete
    With GetObject(ThisWorkbook.Path & "\ledenlijst dle.xlsx")
      ar = .Sheets(1).Range("A2:T" & .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row)
      .Close 0
    End With
  .Range.Cells(1).Offset(1).Resize(UBound(ar), UBound(ar, 2)) = ar
End With
End Sub
 
@VenA
Ik heb jouw code uitgeprobeerd.
geeft echter foutmelding op: With GetObject(ThisWorkbook.Path & "\ledenlijst dle.xlsx")

de regel als volgt aangepast: With Workbooks.Open(Filename:=ThisWorkbook.Path & "\ledenlijst dle.csv", Local:=True)
Dat werkt.
ook in mijn voorbeeldbestanden zoals hier geplaats worden nu de datums goed geimporteerd. Echter niet in mijn originele bestand. Datums staan daar opgeslagen als tekst. Daardoor ging het importeren nog niet goed.
als ik nu mijn originele bestand opsla als CSV bestand en dit importeer dan worden de datums wel goed geimporteerd.
kortom het werkt. Maar mocht er iemand een elegantere oplossing hebben, dan hoor ik het graag.
 
Waar kan iemand uit jouw vraag opmaken dat het om een import van een .csv gaat? Welk nut heeft het plaatsen van een bestand dat afwijkt van het originele bestand?
 
Het gaat niet om een import van een csv bestand. De gegevens komen vanuit een database rechtstreeks in excel. Van dit excel bestand heb ik zelf een csv bestand gemaakt voor import.
op het oog zat er geen enkel verschil tussen het origenele bestand en het door mij geplaatste bestand. alleen dat het originele bestand meer dan 3000 namen bevat. Met kopieren en plakken heb ik enkele namen uit het originele bestand gehaald en daarna de namen wat aangepast.
 
Is het nu opgelost of niet? Van jouw uitleg begrijp ik niet veel maar zal aan mij liggen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan