我们有很多自动化的电子表格,可以提取数据,计算预测,发布网页等。这是一个非常混乱的系统,我很想重做它(例如使用真实的Web服务),但是我们没有有权这样做。
我们运行Excel 2007,大多数电子表格都转换为.xlsm
。
无论如何,由于某种我不知道的原因,某些电子表格会将某些数字单元格设置为看似随机的日期。就像您可能想像的那样,很难找到问题所在,通常我只会发现有人写了一封关于我们的数据阅读3-Feb-1901
的讨厌电子邮件,何时应该阅读400
(显然,Excel认为这是a年)。 1900)。
我已经多次将有问题的单元格设置为数字格式,只是发现它们在一周后充满了日期。
我已经扫描了宏(许多在古老的Excel 4.0 macro language中),它们似乎没有任何格式更改。所有复制/粘贴均作为值完成,并且不保留源单元格格式。
有问题的工作表中没有条件格式设置规则。
在Auto_Open
子例程中根据需要添加一些VBA来格式化单元格似乎可以解决此问题。
此修复程序是否足够好,还是我会在一周内发现日期格式出现在计算中间?如果不是,根本原因是什么,我该如何解决?
一件事:我刚从this source处读取到Excel '07可能会自发将Normal
样式的单元格更改为[$-409]m/d/yy h:mm AM/PM;@
格式。我已更改的某些单元格的样式肯定是Normal
,但显然不是全部。
最佳答案
我假设所讨论的单元格是复制/粘贴的数据还是外部/查询的数据的接收者?
每当您在excel中将粘贴的数据添加到单元格时,即使源是“常规”或“数字”,它也会通过例程来确定列出为“常规”格式的任何内容的最佳格式。有时甚至将目标单元格设置为“数字”格式也无法解决此问题。但是,我发现使此方法按您需要的方式工作的唯一方法是在粘贴/更新/刷新操作之前将格式(在宏中)显式声明为所讨论的目标范围。
我还认为可以在VBA中禁用日期识别,但是我不记得确切的代码。在手动导入或执行更新时尝试记录宏,您应该可以使用即将出现的内容。
编辑:只是做了一个测试运行,并在您的连接字符串和目标添加后:
.WebDisableDateRecognition = True
如果您要从外部来源提取数据而不是复制/粘贴,那绝对可以解决问题。