0

当我尝试运行我的 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
4

1 回答 1

1

这篇 VB6 的博客文章来看,

runonce = obj.GetSettingsFileName(true)

应该改为

runonce = obj.GetSettingsFilePath(true)

BioPDF 网站有一个参考资料,可能会有所帮助。

于 2012-10-23T15:05:31.650 回答