高手帮忙将一段vba宏代码翻译成javascript脚本。急。。。

时间:2021-09-24 04:13:51
宏代码:用来打印word的
Sub Macro1() 

' Macro1 Macro 
' 宏在 2009-4-29 由 微软用户 录制 

    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ 
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _ 
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _ 
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _ 
        PrintZoomPaperHeight:=0 
End Sub 

我自己翻译的js
function jsPrint() 

TANGER_OCX_OBJ = document.all.item("TANGER_OCX");  //获得word控件,专门用来编辑word的用在网页中的控件。可以不用管。
var mydoc = TANGER_OCX_OBJ.ActiveDocument; //得到Document对象 
var app = mydoc.Application; //得到Application对象 
app.PrintOut("",0,0,2,"",0,false,true,true,false,0,0,0,0); //打印代码 



但是我翻译的有问题。执行到打印代码时app.PrintOut("",0,0,2,"",0,false,true,true,false,0,0,0,0); //打印代码 
报此命令无效。

请指教


2 个解决方案

#1


VBA里那些参数可能不是按参数定义的顺序来给的,但在JS里不能通过指定参数名来改变参数的顺序。
所以你最好查查PrintOut的文档(应该在Office文档里有),看看参数顺序,再试试。

#2


这是PrintOut文档中的说明:
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

这是你给的VBA的代码,很明显,上面第一个参数是Background,在下面这个参数是在中间给出来的,所以顺序肯定不对。
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ 
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _ 
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _ 
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _ 
        PrintZoomPaperHeight:=0 

按说明中的参数顺序,重新给JS参数吧。像Append等缺省了的参数,查文档看默认值,没默认值就自己看着办。

#1


VBA里那些参数可能不是按参数定义的顺序来给的,但在JS里不能通过指定参数名来改变参数的顺序。
所以你最好查查PrintOut的文档(应该在Office文档里有),看看参数顺序,再试试。

#2


这是PrintOut文档中的说明:
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

这是你给的VBA的代码,很明显,上面第一个参数是Background,在下面这个参数是在中间给出来的,所以顺序肯定不对。
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ 
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _ 
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _ 
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _ 
        PrintZoomPaperHeight:=0 

按说明中的参数顺序,重新给JS参数吧。像Append等缺省了的参数,查文档看默认值,没默认值就自己看着办。