Changing the System Date Format is not really friendly to other applications. Undesired results can and will occur.
I have been down this road a couple of times, for dates and number formats. I do not have the code handy, but this the principle. You have to know that the internal format for dates is the US format "mm/dd/yyyy". You need to transform date strings to that format in order to convert them to dates.
When starting the application determine the date format. This does need some thinking as there multiple possibilities for the date format.
Try the following on a simple form with a label.
Label1.Caption = Format(Date, "mm/dd/yyyy")
Label1.Caption = Label1.Caption & vbNewLine & Format(Date, "Short Date")
The firstline will show the curent date in your desired format, the second will produce the System Date Format.
You will have to parse the standard formating produced by the first line. In your application you then have to work the other way around. [TIP:do not use the current date for that but Format(CVDate("05/31/2047"), "Short Date") You can then easily check at which position the day, month and year appear.]
Store the format found in a global variable gstrDateFormat.
Now when you have to convert a string value to a date use the following function:
Public Function gfstrToDate(strText As String) As Date
Select Case gstrDateFormat
Case "dd/mm/yyyy", "dd-mm-yyyy"
gfstrToDate = CVDate(Mid(strText, 4, 2) & "/" & Mid(strText, 1, 2) & "/" & Mid(strText, 7))
Case "mm/dd/yyyy"
gfstrToDate = CVDate(strText) 'already in the correct internal format
End Select
End Function
This does not cover all possible date formats, but that is upto you.