Hi,

I'm using a 3rd party COM plugin to Excel, that accepts an Excel range as input. This range gets sent by the plugin as an XML stream to a remote server. The plugin has a VBA API, so I can use VBA to control the plugin.

For performance reasons, I'd like to send only the rows that have been changed, rather than the entire worksheet. For example, if the Excel worksheet has 10,000 rows, but I only change 10 rows, I only want to send the 10 rows, not the 10,000.

For my purposes, any action which triggers the Worksheet_Change event is fine, even if the data isn't actually changed from the previous values.

What I'd like to do (pseudocode):

* whenever a worksheet_change event fires, flag that row. Perhaps place a character in the far right column of the worksheet??? Unless there's a better approach. Assume that column starts out as blank.
* when the command button is clicked to trigger the plugin, autofilter the worksheet on that character.
* copy the filtered range to another, hidden worksheet.
* clear the flag variable in both worksheets.
* turn off the autofiltering from the main worksheet.
* get the usedrange for the copied data.
* using the API of the COM plugin, dynamically set the input range.
* fire off the Stored Procedure for the plugin.
* once the remote process returns control to Excel, clear out the copied data from the hidden worksheet.

Does this sound like a reasonable design? Also, do you have any sample code to programatically autofilter and copy the filtered range to another worksheet?

Thanks...