2017-01-13 6 views
0

У меня есть код, который открывает мой шаблон и набор данных и копирует набор данных в мою рабочую книгу шаблонов. Просто. Ну, видимо, нет.Код конвертирует даты в американский формат?

После того, как мой код копирует этот набор данных, я заметил, что все мои даты преобразуются в американский формат. Соответствующий набор данных сохраняется как CSV, так как это так, как это запланировано из базы данных.

Мой план состоит в том, чтобы изменить данные в формате XLSX, поскольку это, как представляется, устраняет проблему. Но это не объясняет, почему это происходит, в первую очередь, какие-то идеи?

Dim TemplateWB As Workbook 
Dim DataWB As Workbook 

'Set Dim and Open files 
Set TemplateWB = Workbooks.Open(TemplateFull) 'TemplateFull links to my template file 
Set DataWB = Workbooks.Open(DataFull)   'DataFull links to my dataset 

'Make sure sheet is visible within template 
TemplateWB.Sheets("Data_1").Visible = xlSheetVisible 
TemplateWB.Sheets("Data_1").Activate 

'Remove any data contained within template 
InitialLastRow = Cells(Rows.Count, 1).End(xlUp).Row 
InitialLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 
Cells(2, 1).Resize(InitialLastRow, InitialLastColumn).ClearContents 

'Select new dataset 
DataWB.Sheets("Data_1").Activate 

NewLastRow = Cells(Rows.Count, 1).End(xlUp).Row 
NewLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 

    Cells(1, 1).Resize(NewLastRow, NewLastColumn).Copy Destination:=TemplateWB.Sheets("Data_1").Range("A1") 

'Save template and close 
     Workbooks(DataFileName).SaveAs (ArchiveFull & Year(Now()) & "_" & Month(Now()) & "_" & Day(Now()) & ".csv") 
     Workbooks(ArchiveFileName & Year(Now()) & "_" & Month(Now()) & "_" & Day(Now()) & ".csv").Close 

ответ

1

Если открыть CSV в коде, Excel пытается определить тип данных в каждом столбце, используя настройки США, где это возможно. Вы должны исправить это, указав аргумент Local:=True метода Workbooks.Open.

+0

Спасибо @Rory, работал как шарм – Karm

0

При импорте дат используйте CDate, он преобразует даты в соответствии с вашими локациями.

+0

Это не сработает, если Excel уже конвертировал их при открытии файла. – Rory