We help IT Professionals succeed at work.

VBScript: WScript.Shell error "No application is associated with the specified file for this operation.

sndip asked
On some computers (Vista with MS Word 2007), I am getting "No application is associated with the specified file for this operation." when using the code attached.  The file association is exists and when I double click on the file in windows explorer, it opens up in MS Word successfully.  When looking at the file list in Windows Explorer, the ".doc" have a file type of "DOC File".  On computers that do work, the file type is listed as "Microsoft Office 97 - 2003 Document".

I tried importing HKCU\Software\Microsoft\Windows\current version\Explorer\File Ext\.doc keys from working system and re-associating the ".doc" extension to no avail.  

Any ideas would be greatly appreciated.

<%@ Language=VBScript %>

<script language="VBScript">
	function ShellOpenFile(sFilePathAndName) 
		sFilePathAndName = document.getElementById("filepath").value
		'on error resume next
		Dim WshShell
		set WshShell = CreateObject("WScript.Shell")
		window.status = "Opening File: " & sFilePathAndName
		WshShell.Run chr(34) + sFilePathAndName + chr(34)
		set WshShell = nothing
	End function	
<BODY width="500">
<tr><td width="100%">
		<input type="text" id="filepath" name="filepath" width="100%" value="c:\test.doc">&nbsp;<a href="#" onclick="ShellOpenFile('')">Open File</a>

Open in new window

Watch Question

Tech Lead (Windows), Endpoint Device Management Services
Hi sndip,

I can't tell you why this is happening, but if you run Word with the doc as an argument, that should mitigate the problem:

WshShell.Run "WinWord.exe " & chr(34) + sFilePathAndName + chr(34)

If the script has to open multiple filetypes you can check first if it is a Word file:

If LCase(Right(sFilePathAndName, 4)) = ".doc" Or LCase(Right(sFilePathAndName, 5)) = ".docx" Then
    WshShell.Run "WinWord.exe " & chr(34) + sFilePathAndName + chr(34)
    WshShell.Run chr(34) + sFilePathAndName + chr(34)
End If

Hope this helps,


Although I am still curious as to "why", your solution will work for me.  Thanks