我们有很多自动化的电子表格,可以提取数据,计算预测,发布网页等。这是一个非常混乱的系统,我很想重做它(例如使用真实的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


如果您要从外部来源提取数据而不是复制/粘贴,那绝对可以解决问题。

09-20 23:37