passinthru
Board Regular
- Joined
- Jun 16, 2003
- Messages
- 185
Hi, folks. I'm working with some diagnostic messages produced by a communications network, and trying to isolate a certain kind of message. There are many different types of messages contained in the error logs, and I need to look at different ones at different times. As a single log may contain thousands of messages, I'm trying to use VBA to grab the ones I want. The easy part is that these logs can be exported as CSV files. Yay!
Each message contains an identifier which I can use for finding the correct messages of a given type. (I'm only looking for one type at a time.) However, this identifier is not on the first line of the message; it's buried a few lines down, and the number of lines is variable. Additionally, the length of the message is variable. The good news is, all messages of interest start with the same text string, and all of them end with another consistent text string. It looks something like this:
(Where "blah" is useful information that varies, and the number of lines of blah varies.)
The Message Start string is constant across all message types, as is the Message End string, so I can't use them to find the correct Message Type. However, they are still useful for marking the start and end of each message.
I'm using the find function to find the correct message type, then another find (going up) to get the start of the message, and putting the row number into a variable (msgStartRow). Then I find again for the end of message (msgEndRow).
That all works just fine.
What I can't figure out is how to turn those message row numbers into a range that can then be copied and pasted onto a separate worksheet.
How can I use these variables to copy the correct range? For example, this is what I recorded manually, but it's not intelligent. It can't accommodate different message lengths:
Or is there a better approach you can suggest?
Thanks!
Each message contains an identifier which I can use for finding the correct messages of a given type. (I'm only looking for one type at a time.) However, this identifier is not on the first line of the message; it's buried a few lines down, and the number of lines is variable. Additionally, the length of the message is variable. The good news is, all messages of interest start with the same text string, and all of them end with another consistent text string. It looks something like this:
Message Start
blah
blah
Message Type
blah
blah
Message End
(Where "blah" is useful information that varies, and the number of lines of blah varies.)
The Message Start string is constant across all message types, as is the Message End string, so I can't use them to find the correct Message Type. However, they are still useful for marking the start and end of each message.
I'm using the find function to find the correct message type, then another find (going up) to get the start of the message, and putting the row number into a variable (msgStartRow). Then I find again for the end of message (msgEndRow).
That all works just fine.
What I can't figure out is how to turn those message row numbers into a range that can then be copied and pasted onto a separate worksheet.
How can I use these variables to copy the correct range? For example, this is what I recorded manually, but it's not intelligent. It can't accommodate different message lengths:
Code:
ActiveCell.Offset(6, 0).Range("A1:A145").Select
Selection.Copy
Or is there a better approach you can suggest?
Thanks!