2017-01-17 3 views
2

日付が入力され、オーストラリアの日付形式でフォーマットされた列Dを持つCSVファイルがあります。しかし、VLSは、CVSファイルがXLSXとして保存されたときに日付形式を変更します

value = 4/10/2016, format = 4/10/2016 (as dd/mm/yyyy) 
value = 15/03/2017, format = 15/03/2017 (as dd/mm/yyyy) 

:それは正しく日付を保存し手動 XLSXとして、私はこのファイルを保存すると、私はXLSXファイルを再度開くときに、日付が正しく表示され

4/10/2016 (correctly representing 4 Oct 16) 
15/03/2017 (correctly representing 15 Mar 17) 

:残りのデータは整数であります私はプログラム的に同じことを行うとき:

fileNameXLSX = "H:\20160930.xlsb" 
fileNameCSV = "H:\20160930.csv" 
Set srcBook = Application.Workbooks.Open(filenameCSV, ReadOnly:=True) 
Application.DisplayAlerts = False 
srcBook.SaveAs filename:=fileNameXLSX, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
srcBook.Close False 
Set srcBook = Nothing 
Application.DisplayAlerts = True 

をして、ファイルを開いて、いくつかのエントリ、月/日付がスワップされ、そのXLSXファイルでそれらを取得します値は次のようになります。

value = 10/4/2016, format = 10/4/2016 (still dd/mm/yyyy) 
value = 15/03/2017, format = 15/03/2017 

私はオーストラリアのウインドウズロケールです。どのように私はこれを修正することができますので、私のVBAコードは、私がそれを期待しています。

答えて

2

localをtrueに設定しようとしましたが、希望の形式で日付を保持する必要があります。

fileNameXLSX = "H:\20160930.xlsb" 
fileNameCSV = "H:\20160930.csv" 
Set srcBook = Application.Workbooks.Open(filenameCSV, ReadOnly:=True) 
Application.DisplayAlerts = False 
srcBook.SaveAs filename:=fileNameXLSX, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False, Local:=True 
srcBook.Close False 
Set srcBook = Nothing 
Application.DisplayAlerts = True 

出典:あなたのコードでは、これは次のようになりますhttps://msdn.microsoft.com/en-us/library/office/ff841185.aspx

+0

3。 @Docmartiの変種も同様に機能します。ありがとうございました – hardish

0

、このようなものになり、私はそれの日付で列を選択し、あなたがこれをprefer-大会に自分の番号の書式を設定するコードの行を追加するために簡単な解決策として推薦する:

fileNameXLSX = "H:\20160930.xlsb" 
filenameCSV = "H:\20160930.csv" 
Set srcBook = Application.Workbooks.Open(filenameCSV, ReadOnly:=True) 
Application.DisplayAlerts = False 
srcBook.SaveAs Filename:=fileNameXLSX, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

srcBook.Sheets(1).Columns("A:A").EntireColumn.NumberFormat = "d/mm/yyyy" 

srcBook.Close False 
Set srcBook = Nothing 
Application.DisplayAlerts = True 

希望します。 TheSilkCode

2

私はcsvファイルの日付がアメリカでない場合OpenコマンドでTrueにローカルパラメータを設定することをお勧めします。

fileNameXLSB = "H:\20160930.xlsb" 
fileNameCSV = "H:\20160930.csv" 
Set srcBook = Application.Workbooks.Open(filenameCSV, ReadOnly:=True, local:=True) 
Application.DisplayAlerts = False 
srcBook.SaveAs Filename:=fileNameXLSB, FileFormat:=xlExcel12, CreateBackup:=False 
srcBook.Close False 
Set srcBook = Nothing 
Application.DisplayAlerts = True 
+0

ありがとうございます。 @tomによる変種も同様に機能します。ありがとう – hardish

関連する問題