【发布时间】:2019-08-06 14:58:11
【问题描述】:
有人可以帮我解决这个问题吗?
问题: 我在一个通常可以完美运行的模块中有以下代码,但是当我在this sample file 上运行它时,我注意到“上限”(D 列)中的小数点被删除了。
我发现的一个临时解决方案是我必须在示例文件的第 26 行将上限从 1 修改为 1.0(以便在末尾添加“.0”)以实现看起来像一个十进制数。在此之后,小数点被正确导入到工作表上。但是,这不是解决方案。
我正在使用: Excel 2013 (15.0.5111.1000) 32 位(办公包为:MS Office Standard 2013)和以下库启用
如何重现:
- 将以下代码放入模块中并在示例文件上运行
- 注意 D 列。从第 6 行开始,所有小数都被删除。你会 只能看到整数。
- 现在,打开示例文件(例如在 Notepad++ 中),然后修改 第26行的上限值从“1”到“1.0”,然后保存。
- 在修改后的示例文件上再次运行以下代码并注意 从第 6 行开始所有小数的 D 列(上限) 出现。
知道为什么会这样吗?
Sub ADODB_Import_CSV()
ThisWorkbook.Sheets(1).Activate
ThisWorkbook.Sheets(1).Cells.Clear
Dim Connection As New ADODB.Connection
Dim Recordset As New ADODB.Recordset
On Error Resume Next
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path
On Error GoTo 0
ImportedFileFullPath = Application.GetOpenFilename
If ImportedFileFullPath = False Then Exit Sub
ImportedFileDirPath = Mid(ImportedFileFullPath, 1, InStrRev(ImportedFileFullPath, "\"))
ImportedFileName = Mid(ImportedFileFullPath, InStrRev(ImportedFileFullPath, "\") + 1, Len(ImportedFileFullPath))
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ImportedFileDirPath & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"""
strSQL = "SELECT Trim(TestCodeDescription)," & _
"Cdbl(NumbericMeasure) AS Measurements," & _
"Cdbl(LowerLimit) AS LowerLimit," & _
"Cdbl(UpperLimit) AS UpperLimit" & _
" " & _
"FROM [" & ImportedFileName & "]" & _
" " & _
"WHERE (IsNumeric(LowerLimit) AND IsNumeric(UpperLimit) AND IsNumeric(NumbericMeasure) AND LowerLimit<>UpperLimit AND IsDate(EventDateTime1))"
Connection.Open Provider
Recordset.Open strSQL, Connection
For i = 0 To Recordset.Fields.Count - 1
Cells(1, i + 1).Value = Recordset.Fields(i).Name
Next i
With ActiveSheet
.Range("A2").CopyFromRecordset Recordset
.Range("A1").AutoFilter
.Columns.AutoFit
End With
Recordset.Close: Set Recordset = Nothing: Connection.Close: Set Connection = Nothing
End Sub
【问题讨论】:
-
能否请您出示示例文件,我无法访问链接。
-
嗯,我在谷歌驱动器中分享了它。它应该是可访问的。我不知道,也许它可以在 Internet Explorer 中使用? drive.google.com/file/d/…
-
我在工作时没有访问权限。
-
是的,我也无法在工作中访问 GDrive.. 有什么建议我应该把它上传到哪里?
-
如果您想为每个字段指定数据类型,您可以使用
schema.ini文件 - 参见例如stackoverflow.com/questions/32209804/…