Vba 从宏打开XLS文件时数据会更改

Vba 从宏打开XLS文件时数据会更改,vba,excel,Vba,Excel,我希望workbook1上有一个宏,它要求用户打开一个工作簿(workbook2),该工作簿只有一个工作表,可以从中将所有数据复制到workbook1中的工作表“导入” 我的代码如下 Sub test() Dim NewWB As Workbook Dim Vfile As Variant Vfile = Application.GetOpenFilename("Excel-files,*.xls", 1, "The Import _ sheet is empty, please s

我希望workbook1上有一个宏,它要求用户打开一个工作簿(workbook2),该工作簿只有一个工作表,可以从中将所有数据复制到workbook1中的工作表“导入”

我的代码如下

Sub test()

Dim NewWB As Workbook
Dim Vfile As Variant

Vfile = Application.GetOpenFilename("Excel-files,*.xls", 1, "The Import _
    sheet is empty, please select ME3M data to import", , False)
If Vfile = False Then Exit Sub
Set NewWB = Workbooks.Open(Vfile)
NewWB.Sheets(1).Cells.Copy Destination:=ThisWorkbook.Sheets("Import").Range("A1")
NewWB.Close

End Sub
我的问题是,我需要打开的文件是xls格式的,而打开宏的文件(我想在其上复制数据)是xlsx格式的,我怀疑这会造成一些问题,因为有些单元格包含数字,如果通过vba打开,这些数字的值会发生变化

例如,在一个单元格中有一个数字1.500(一千五百),如果我以旧的方式单击它打开该文件,我就会看到它;但是,如果我通过运行上述代码而不使用最后两行来打开宏,则单元格中的数字将变为1,5(一行半)。

如果使用:

Set NewWB = Workbooks.Open(Filename:=Vfile, Local:=True)

它应该尊重您的本地设置,而不是使用US设置作为VBA的默认设置。

这似乎是十进制分隔符的问题。您是否已验证两个工作簿中的小数分隔符相同?@jbarker2160 DecimalSeparator是一个
应用程序
属性,但。。。可能与区域设置和/或单元格本身的格式有关,也可能与区域设置和/或单元格本身的格式有关。@DavidZemens,是的,但数据仍以该格式存储,如果您知道如何检索本地化数据,则本地化数据存储在文档属性中。所以即使它是应用程序级属性,它仍然会影响保存的每个文档。请尝试使用:
Set NewWB=Workbooks.Open(Filename:=Vfile,Local:=True)
@Rory,将其写入答案。