2008-10-15 131 views
2

我有一個VB應用程序,它提取數據並創建3個CSV文件(a.csv,b.csv,c.csv)。然後,我使用另一個Excel電子表格(import.xls)將上述CSV文件中的所有數據導入到此表單中。CSV日期格式

import.xls文件有一個宏,它可以逐個打開CSV文件並複製數據。我面臨的問題是CSV文件中的日期存儲爲mm/dd/yyyy,並將其原樣複製到Excel表單中。但我想以dd/mm/yyy格式顯示日期。

當我手動打開任何CSV文件時,日期顯示格式正確(mm/dd/yyyy)。任何想法我怎麼能解決這個問題?

回答

8

可以使用格式 VBA函數:

Format(DateText, "dd/mm/yyyy") 

這將格式化無論你有多喜歡。

對於更常見的解決方案,請嘗試更改Windows本身的區域設置,Excel將其用於日期格式設置。

開始 - >設置 - >控制面板 - >區域選項。

確保語言設置爲任何適用且日期設置爲你希望他們

+0

記錄數很高,並且在import.xls中有很多工作表。任何其他方法自動執行它? – Shoban 2008-10-15 05:52:59

+0

我剛剛編輯這篇文章,看看改變Windows設置本身 – Mark 2008-10-15 06:01:43

14

當我遇到這個問題時,我通常會將日期寫爲yyyy-mm-dd,Excel將明確地解釋這些日期。

+1

一些奇怪的事情,這是最這裏推薦的解決方案的健壯性。 Excel和VBA與系統區域設置交互的方式非常不透明,很容易出現奇怪的結果。使用這種方法可以避免大量代碼,並且通常不會對用戶造成問題。 – Simon 2009-12-11 17:45:14

1

首先所有其他的答案都不錯,但那裏有一些更多的信息,你可能會發現有用

CSV文件只包含文本。這是數據不是日期格式,而是文本格式。所以當你在Excel中打開一個CSV文件時,默認情況下Excel會爲你解釋這些數據。它不需要。您可以強制它將其保留爲文本,或者如Mark所述,您可以將代碼添加到導入宏中,以便爲您更改它。 如果你想要一個自動化的過程,那麼這是最好的解決方案。只需將VBA中的代碼添加到將日期格式應用於具有日期數據的列的宏中即可。 或者,您可以在文件打開後手動執行此操作,並通過自己選擇列和格式化來粘貼數據。您可以自定義數字格式(選擇自定義),然後自己寫出來。例如dd/mm/yyyy。

0

我也有類似的問題,並解決了它這樣的,它本質上是「以上所有的」選項

  1. 隨着format(date,'dd-mmm-yyyy') 日期轉換爲2-3-4格式 例如01-AUG-2008,沒辦法計算機 失誤01 - 8月08-JAN :-)
  2. 由於在Excel 複製此自動恢復回給 日期/時間格式,結果 轉換爲字符串在1種
  3. 格式的 功能使用cstr,其中,如果你不這樣做的日期 複製文本(細胞, thickheaded爲Excel,它會 將其轉換回日期/再次
  4. 時間
  5. 將表格另存爲csv文件並在記事本中打開 以確認其具有 工作

有些人可能會說這是矯枉過正,但最好是在安全方面,比擁有一個用戶叫我從現在起一年,並告訴我,它做的日期的