【发布时间】:2017-12-30 05:18:28
【问题描述】:
我正在尝试将 CSV 文件导入我当前的工作簿;但是,它会自动格式化我的一些数据。有没有办法防止这种情况发生?
示例:
01JAN-1
自动转换为:
01 年 1 月 1 日
我查找了添加Local:= true,但我不确定如何实现它。我试过wb = Workbooks.Open(fileImportName, Local:=True)
代码:
Sub file_Import()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim fileImportPath As String, fileImportName As String, total As Integer, currentWorkbook As String
fileImportPath = "C:\Users\UserName\Desktop\Test Data.csv"
fileImportName = "Test Data.csv"
currentWorkbook = "Testing Import.xlsm"
total = Workbooks(currentWorkbook).Worksheets.Count
Workbooks.Open (fileImportName)
Workbooks(fileImportName).Worksheets(Sheets(1).Name).Copy _
After:=Workbooks(currentWorkbook).Worksheets(total)
Workbooks(fileImportName).Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
【问题讨论】:
-
如果在导入后手动将列改回
Text,是否显示正确?如果是这样,这可能会回答您的问题:stackoverflow.com/questions/8265350/… -
它没有,当我尝试将其转换为文本时,它会将其转换为 36892。我想要它的原始形式,因为这不是日期,而是项目名称。
-
您必须在粘贴之前将单元格格式化为 Text NumberFormat = "@"
-
是否发生了您真正需要/想要的自动转换?您可以将 CSV 内容读入内存,分配给二维数组,然后写入工作表。但是使用这种方法,您将完全失去任何想要/有用的自动转换。
-
抱歉没时间了,您需要在目标文件中添加一个新工作表,在新工作表中,您必须将列(您的“项目名称”将被粘贴的位置)格式化为文本,然后打开您的 .cvs 文件并复制使用的范围并粘贴到新工作表中的范围“A1”。