Since VB's Shell statement starts the outside program and then passes control to the next line of code right away, the outside program probably doesn't have a chance to finish running before you try to attach the file to the email message. You'll get the error because the outside program is still writing the file when your code tries to attach it.
Luckily, the fix for this is really easy. All you have to do is put the following code after your Shell statement, and then tweak the value of the variable "waitSeconds" so that you're waiting long enough for the outside program to finish, but not so long that it looks like your program isn't doing the job:
waitSeconds = 5 ' Wait for 5 seconds before trying to use the file
startTime = Timer
Do Until Timer - waitSeconds >= startTime
DoEvents ' Don't want the user to think it's frozen!
Loop
That should fix the problem! Good luck!
- Sen