具有非美国区域设置的 DoCmd.TransferText
Posted
技术标签:
【中文标题】具有非美国区域设置的 DoCmd.TransferText【英文标题】:DoCmd.TransferText with non-US regional settings 【发布时间】:2014-06-10 12:24:50 【问题描述】:我的客户端有一个 Windows 区域设置,其中逗号作为小数位分隔符,分号作为列表分隔符,这是大多数欧洲国家/地区的典型格式设置。当我的代码尝试在没有导出规范的情况下运行 DoCmd.TransferText
时,它会抛出此错误:
所以我的解决方案是使用此处建议的导出规范http://msdn.microsoft.com/en-us/library/office/ff835958%28v=office.15%29.aspx
好吧,正如我发现的(例如这里:Docmd.TransferText question)创建用户规范的唯一方法是手动运行一些导出向导。在其中我可以设置我想使用哪个小数位分隔符和哪个列表分隔符。看起来不错,但有一个问题:导出规范还包含有关导出列及其格式的信息。但是我正在动态创建导出查询,每次导出运行的列都不同。如何使用导出规范?或者我的问题还有其他解决方案吗?
注意:当然,我不能强迫我的客户更改他的 Windows 区域设置。我也不能导出 CSV 文件,只是将值逐个写入 VBA 中的原始文本文件输出,因为查询很大,这可能需要几个小时才能完成。我不介意最终的 CSV 文件是否有逗号作为列表分隔符和点作为小数分隔符(美国格式)或分号作为列表分隔符和逗号作为小数分隔符(本地格式设置) - 我不在乎,因为我可以调整进一步的步骤相应地处理 CSV。
【问题讨论】:
【参考方案1】:您有两种选择:(a) 使用导出格式规范的内联文本版本,或 (b) 使用向导创建导出规范,然后使用普通 Access 数据库方法修改导出规范表中的值.
【讨论】:
以上是关于具有非美国区域设置的 DoCmd.TransferText的主要内容,如果未能解决你的问题,请参考以下文章
DecimalFormatSymbols 具有非正统语言环境的意外区域特定值
在具有德国区域设置的计算机上使用 VBA 自动过滤器过滤日期问题
如果区域设置未在“英语(美国)”上设置,Geolocator.GetGeopositionAsync() 返回四舍五入的值