2012-10-23 89 views
0

即时得到这个错误,当我尝试运行我的VBS脚本,VBS脚本错误

对象犯规支持此属性或方法

我的VBS代码是

Rem -- This example will show you how to create a very simple runonce configuration. 

Rem -- Get current path of this script. 
Set fso = CreateObject("Scripting.FileSystemObject") 
currentdir = fso.GetAbsolutePathName(".") 

Rem -- Read the info xml 
Set xmldom = CreateObject("MSXML.DOMDocument") 
xmldom.Load("c:\Montupet\PDF" & "\info.xml") 

Rem -- Get the program id of the automation object. 
progid = xmldom.SelectSingleNode("/xml/progid").text 

Rem -- Create the COM object to control the printer. 
set obj = CreateObject(progid) 

Rem -- Get the default printer name. 
Rem -- You can override this setting to specify a specific printer. 
printername = "PDF Writer - bioPDF" 

runonce = obj.GetSettingsFileName(true) 
      ^
       Error here 


set oArgs=wscript.Arguments 

Rem -- Print all the files in the 'in' folder 

dim file_name, template 
dim command_line_args 

set command_line_args = wscript.Arguments 

'Check if any Arguments have been passed to our script. 
if command_line_args.count > 0 then 
file_name = command_line_args(0) 
template = command_line_args(1) 

Set oWd = CreateObject("Word.Application") 
oWd.Visible = False 
wordname = """" & "c:\MTMS\MTMSPRT\" & file_name & """" 
    wscript.echo wordname 
Set oDoc = oWd.Documents.Open(wordname) 
    Set oPS = oDoc.PageSetup 

    ' Reduce the margins to .5" (36 points) 
oPS.LeftMargin = 8.4 
    oPS.RightMargin = 0.2 

'Save changes to doc on closing and quit Word 
oDoc.Saveas wordname , 0 
wscript.echo "Saved" 
oDoc.Close 
wscript.echo "close" 
oWd.Quit 
wscript.echo "Quit" 
Set oWd = Nothing 
Set objShell = Nothing 

wscript.echo "Cleared Word" 
Set oWd = Nothing 
Set objShell = Nothing 




output = "c:\MTMS\MTMSPRT\PDFs\" & Replace(ucase(file_name), "DOC", "") & "PDF" 

Rem -- Set the values 
obj.Init 
obj.SetValue "Output", output 
obj.SetValue "ShowSettings", "never" 
obj.SetValue "ShowPDF", "no" 
obj.SetValue "ShowProgress", "no" 
obj.SetValue "ShowProgressFinished", "no" 
obj.SetValue "SuppressErrors", "no" 
obj.SetValue "ConfirmOverwrite", "no" 
obj.SetValue "superimpose", template 



Rem -- Write settings to the runonce-Invoice.ini 
obj.WriteSettings True 
wscript.echo "runonce created" 
Rem -- Print the document 
printfile = "c:\MTMS\MTMSPRT\" & file_name 
cmd = """" & "c:\Montupet\PDF\printto.exe"" """ & printfile & """ """ &  printername & """" 
wscript.echo "printfile line setup" 
Set WshShell = WScript.CreateObject("WScript.Shell") 
ret = WshShell.Run(cmd, 1, true) 
wscript.echo "shell run start" 
Rem -- Wait until the runonce is removed. 
Rem -- When the runonce is removed it means that the gui.exe program 
rem -- has picked up the print job and is ready for the next. 
While fso.fileexists(runonce) 
wscript.echo "checking for runonce" 
    Rem -- Wait for some milliseconds before testing again 
    wscript.sleep 100 
Wend 
wscript.echo "runonce gone" 
end if 

Rem -- Dispose the printer control object 
set obj = Nothing 
+0

“set obj = CreateObject(progid)”的progid是什么?所创建的对象是否支持'GetSettingsFileName()'方法? – 2012-10-23 13:56:24

+0

你是什么意思? –

+0

'progid'在行'set obj = CreateObject(progid)'的值是什么? – 2012-10-23 14:09:22

回答

1

来看通过this blog post for VB6

runonce = obj.GetSettingsFileName(true) 

应改为

runonce = obj.GetSettingsFilePath(true) 

的BioPDF网站有一个reference这可能会进一步帮助。