2010-03-01 101 views
1

我们有一个小型项目,涉及自动解析某些服务器/邮件日志(等等)。现在,计划A只是一起Python和Django一起做正确微笑,但我得到否决,解决方案必须是纯Excel,因为它相信会更便携。Excel VBA - 分析服务器日志

1.导入制表符分隔的文件

我们的输入文件是“CSV”文件,但它实际上是一个制表符分隔的文件。

喜欢的东西:

"Server Name" "Server Alias" "1Feb09" "2Feb09" "3Fe09" "4Feb09" 
"BobsServer" "Foobar foobar" "34234" "23432" "52234" "23432" 
"JanesServer" "Foobar foobar" "30984" "34233" "34523" "92342" 
"SamsServer" "Foobar foobar" "12321" "23423" "23423" "23423" 

我用下面的VBA导入此:

Workbooks.OpenText Filename:="C:\logs.csv", Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True 

有趣的是,当文件有一个”。 csv“的扩展名,它似乎被破坏,Excel将所有内容都塞进一列。然而,当文件扩展名是别的(例如“.txt”)时,它会导入正常。这是每次完全相同的文件这是Excel如何处理文件扩展名的一些怪癖,我错过了什么?

我希望我不需要在VBA中做一些hackery来每次重命名文件,我想我可以,但我实际上很好奇为什么会发生这种情况?

2.粘贴到现有工作表

第二个问题,上述打开CSV文件作为一个全新的片材,是有办法,而不是做上面的分析,但它插入到一个临时的新的工作表在我们的工作簿?

3.阅读条目添加到主表

下一步是把我们的日志文件,并融入我们的主工作表,其中包含每个服务器的历史。

从我十分有限的Excel知识,我是假设,我们会做一些事情,如:通过线依次通过我们的输入 日志行:

  1. 外环。
  2. 抓住服务器名称,然后在主列表中对其进行查找。
  3. 如果它不存在,我们为这个服务器创建一个新行。
  4. 内循环:循环遍历我们日志的每个列 。
  5. 假设服务器现在在那里,我们回去抓取日志中的日期。然后,我们在主列表中为我们的日期做一个 hlookup。我们假设它不存在,但是,如果它存在,我们可以覆盖该单元格。如果它不存在,我们需要找到正确的 插入日期(有可能在序列中缺少日期)并插入我们的日期。

上述逻辑看起来是否合理?或者有更有效的方法在Excel中执行它? (我怀疑可能有,我不太了解Excel对象模型)。

4.总结出总跨任意日期范围

的最后一步是实际计算总计为我们想要的服务器,基于任意日期范围。这只是一个宏函数,需要三个参数(服务器,开始日期,结束日期)。

有一个我们特别感兴趣的服务器列表,我猜我们可能会将其存储在单独的工作表中。然后,我们将为该列表中的每个人做一个函数调用,并在这两个日期之间横跨该行进行横向求和。有什么快捷方式我可以在这里使用这部分?

+0

您的Excel/VBA唯一限制允许您使用ADO吗?如果是这样,请参阅http://support.microsoft.com/kb/257819不同的方法 – barrowc 2010-03-02 01:45:58

回答

0

您是否考虑过使用Log Parser

日志分析器是一个功能强大,用途广泛 工具,提供了通用查询 访问诸如日志 文件,XML文件和CSV文件基于文本的数据, 以及对 的Windows®关键数据源操作系统,如 事件日志,注册表,文件 系统和ActiveDirectory®。

+0

heya, 这很有趣,感谢您的链接。 但是,他们对此必须严格要求,必须纯粹在Excel/VBA中完成。哎呀,如果没有这种限制,我宁愿用Python,Ruby,heck,Perl,任何东西......来做这件事。 干杯, 维克多 – victorhooi 2010-03-01 06:45:34

+0

这是奇怪的限制!你仍然可以使用另一种工具,只需在Excel中打开结果.... – 2010-03-01 07:05:31

+0

heya,你在向合唱团传道,伙计。我一直认为这是“工作的最佳工具”。无论如何,如果可能的话,我正在专门寻找Excel/VBA解决方案。感谢您的努力。干杯,维克多 – victorhooi 2010-03-01 07:18:30