in reply to Pass arguments to VBA macro

Typo:
$word->run("vad", "D:\\Prasad\\Projects\\tools\\vad"');
should be
$word->run("vad", "D:\\Prasad\\Projects\\tools\\vad");

And:
#$word->run("vad")       #running fine
should be:
#$word->run("vad");       #running fine

A working example based on what you have
use strict; use warnings; use Win32::OLE; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Word'; $Win32::OLE::Warn = 2; # Throw Errors, I'll catch them my $word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit'); #get the word ++object $word->Documents->Add || die("Unable to create document ", Win32::OLE- +>LastError()); $word->run("test", "D:\\Prasad\\Projects\\tools\\vdd");
With a word macro:
Sub test(teststring as String) MsgBox(teststring) End Sub
Works as expected

Update: Removed redundant br tag

Martin