在本地信息不同的情况下,在VBA中使用Opentext

我正在创build一个包含打开2个或3个.csv文件并将其复制到表单中的macros。

这些文件看起来像这样(以分号分隔,十进制=逗号):

 A;B;AT;211,00;2 

我已经解决了,通过使用:

 Workbooks.OpenText filepath, DataType:=xlDelimited, comma:=True, local:=True Windows(filename).Actvate df = Range("A2", Range("A2").End(xlDown).End(xlToRight)) 

然后在我的工作表中离开df 。 这工作正常,当我的本地计算机上工作,但问题出现时,我想要在服务器中运行此macros。 它在哪里打开文件不正确(它由列分隔,而不是像在本地。

这个macros将由本地,服务器和不同的用户运行,所以我想知道:

  • 为什么会这样呢?

  • 我怎样才能使它dynamic?

[编辑]在答案的帮助下,我试图没有成功

 If Application.DecimalSeparator = "." Then Workbooks.OpenText filepath, DataType:=xlDelimited, semicolon:=True ElseIf Application.DecimalSeparator = "," Then Workbooks.OpenText filepath, DataType:=xlDelimited, comma:=True, local:=True End If 

[编辑2]

这是一个解决scheme,但它真的很慢:

 Open filepath For Input As #1 row_num = 1 Do Until EOF(1) Input #1, varlist, Line_FromFile Line_Items = Split(Line_FromFile, ";") nele = UBound(Line_Items, 1) Range(rango.Offset(row_num, 0), rango.Offset(row_num, nele)) = Line_Items row_num = row_num + 1 Loop Close #1 

只需检查该系统的小数分隔符,然后决定如何使用.OpenText

 If Application.DecimalSeparator = "." Then ElseIf Application.DecimalSeparator = "," Then End If 

如果上述不起作用,则使用此替代方法

 If Application.International(xlDecimalSeparator) = "." Then ElseIf Application.International(xlDecimalSeparator) = "," Then End If