2010-03-01 82 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