我有一个csv文件,它基本上有一个日期格式为澳大利亚日期格式的列:
4/10/2016
15/03/2017
但是,在使用以下代码将其复制并粘贴到另一个工作簿时:
srcBook.Sheets(tabf).Range("B1:AD10000").Copy
Workbooks(thisworkbook).Activate
Sheets("raw Data").Range("A2").Select
ActiveSheet.Paste
对于某些条目,月/日被换成美国格式并成为
10/04/2016
15/03/2017
我在澳大利亚的windows区域。是否有可能解决这种意外行为?
答案 0 :(得分:2)
解决此问题的方法总是打开并保存CSV文件,并将 Local 属性设置为 True
当您打开CSV文件时,您可以这样做:
Workbooks.Open "path & filename.csv", Local:=True
保存后,您可以执行以下操作:
ActiveWorkbook.SaveAs Filename:="path & filename.csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
始终在末尾添加,本地:= True 。
答案 1 :(得分:1)
尝试以下代码:
' copy >> paste in 1 line
srcBook.Sheets(tabf).Range("B1:AD10000").Copy Destination:= _
Workbooks(thisworkbook).Sheets("raw Data").Range("A2")
' convert column C to date format of "dd/mm/yyyy"
Workbooks(thisworkbook).Sheets("raw Data").Range("C:C").NumberFormat = "dd/mm/yyyy"
修改1 :
' try copy >> paste special
srcBook.Sheets(tabf).Range("B1:AD10000").Copy
Workbooks(ThisWorkbook).Sheets("raw Data").Range("A2").PasteSpecial xlValues
答案 2 :(得分:0)
您可以使用VBA使用.NumberFormat格式化范围。
srcBook.Sheets(tabf).Range("B1:AD10000").NumberFormat = "dd/mm/yyyy"
这似乎很奇怪,它只会更改某些条目的日期。也许目标表格具有应用于不同单元格的不同格式。如果是这种情况,请选择目标表中的单元格或列,并将它们格式化为excel中的正确日期格式。
答案 3 :(得分:0)
我发现使用CTRL-V粘贴制表符分隔的dd / mm / yy字符串不会交换日-月,而是使用VBA进行。我刚刚发现,如果您以yyyy-mm-dd字符串开头,则它不会交换day-month。我的Makro会在粘贴之前格式化单元格,这也可以。