我打不开这个……有人能帮忙吗?我每天都有一些文件通过电子邮件发送给我,我有一个例行程序将这些文件保存在网络共享上。原来的Excel csv文件中的日期字段列A和B为'DD/MM/YYYY 00:00:00',我需要这个是'DD/MM/YY'。我可以通过打开每个文件,选择列,更改列格式并保存来实现这一点,但我不能在VBA中自动执行此操作。我的代码的当前迭代(我已经在这个块周围很多次了)如下所示。当我运行这段代码时,它将文件保存在新的位置,但列的重新格式化不起作用,列仍保持原始格式:-(
Function F_PREPARE_GENESYS_FILES()
'Finds current day Genesys files on K: drive, copies them to another folder and changes format before data import process
On Error GoTo F_PREPARE_GENESYS_FILES_Err
Dim db As Database
Dim App As New Excel.Application
Dim MyFolder As String
Dim MyFile As String
Dim MyFile2 As String
Dim wbk As Excel.Workbook
Dim FSO As New FileSystemObject
Dim FromPath As String
Dim ToPath As String
Dim FileName As Variant
Set db = CurrentDb
FromPath = "\\chs114file1\dovpasres$\Statistics\Totem\Genesys_reports\"
ToPath = "\\chs114file1\dovpasres$\Statistics\Totem\RunTime\"
FileName = Format([Forms]![Processing]![ProcessDate], "yyyy-mm-dd_") & "*"
FSO.CopyFile FromPath & FileName, ToPath
MyFile = Dir(ToPath)
'Loop through all files in a folder until DIR cannot find anymore
Do While MyFile <> ""
Set wbk = App.Workbooks.Open(FileName:=ToPath & MyFile)
MyFile2 = Left(MyFile, Len(MyFile) - 4)
Sheets(MyFile2).Select
Range("A:B").NumberFormat = "m/d/yyyy"
ActiveWorkbook.Close savechanges:=True, FileName:=MyFile
'wbk.SaveAs MyFile, xlCSVUTF8
MyFile = Dir 'DIR gets the next file in the folder
Loop
1条答案
按热度按时间carvr3hs1#
已编辑
我怀疑认为“Excel csv文件”是错误的,因为CSV文件只是纯文本。当Excel打开它们时,它将内容作为文本读取。显示为“DD/MM/YYYY 00:00:00”的日期只是文本。Excel无法重新格式化它们,除非它将它们视为日期,因此
Range("A:B").NumberFormat = "dd/mm/yyyy"
的变体没有帮助。处理此问题的一种方法是在临时列中添加一个公式,该公式将文本转换为实际日期,并根据需要设置该列的格式。然后你可以在需要的地方
Copy - PasteSpecial
它。下面的简单示例在列B中创建公式,执行PasteSpecial
以覆盖列A中的输入文本日期,然后删除临时公式。在本例中,Set rngFormula
语句应该根据需要向右偏移。.FormulaR1C1
语句应该引用该数量的列。例如,如果您的公式在E列中,则"=DATEVALUE(r[0]c[-1])
中的c[-1]
应为c[-4]
。这将在单独的列中显示输出(对不起,我的输入文本日期是mm/dd/yyyy,但输出是正确的):
| | 我的天啊|B|
| - -----|- -----|- -----|
| 第一章|文本输入“DD/MM/YYYY 00:00:00”|Excel日期(输出)|
|2| 2019 - 01 - 21 12:34:56| 2023年1月31日|
| 三个人|2023 - 02 - 28 12:34:56| 2023年2月28日|
| 四个人|2019 - 03 - 23 12:34:56| 2023年3月31日|
| 五楼|2023年4月30日12:34:56| 2023年4月30日|
|六| 2023年12月31日12:34:56| 2023年12月31日|