Vba vbscript:子调用时类型不兼容

Vba vbscript:子调用时类型不兼容,vba,vbscript,byref,coreldraw,Vba,Vbscript,Byref,Coreldraw,我根据自己编写的vba代码编写了一个vbscript,其中一个对象的方法希望通过ByRef传递一些Double。在vba中,这工作得非常好,而在vbscript中,我遇到了类型ICNOMPATABLE错误 <package> <job id="Main"> <reference object="CorelDraw.Application" version="16.0" /> <script language="VBS

我根据自己编写的vba代码编写了一个vbscript,其中一个对象的方法希望通过ByRef传递一些Double。在vba中,这工作得非常好,而在vbscript中,我遇到了类型ICNOMPATABLE错误

<package>
    <job id="Main">
       <reference object="CorelDraw.Application" version="16.0" />
        <script language="VBScript">
            Option Explicit
            Dim app
            Dim doc
            Dim pg
            Set app = GetObject(, "CorelDraw.Application.16")
            set doc = app.ActiveDocument
            Set pg = doc.pages.Item(1)


            Dim h0, w0
            'h0=0
            'w0=0 
            h0=cdbl(0) 'Trying to force Variant to Double
            w0=cdbl(0) 

            call pg.GetSize(w0, h0)

            Wscript.echo "h orig=" + CStr(h0) + ",w orig=" + CStr(w0) + " unit=" + CStr(doc.Unit)

        </script>
    </job>
</package>
你知道怎么解决这个问题吗


关于,

您尝试过货币类型吗?我认为VBScript只有变量,所以您不能通过引用传递双变量,因为您总是会得到一个包含双值的变量,这不是被调用方所期望的。@Zam:我刚刚尝试过。同样的结果。@Theblatone:你说得对。但是有解决方案吗?您需要创建一个中间层,该层可以从VBScript调用,将变量转换为double,并调用接受double的目标API。实现这一点最简单的方法是为其创建一个VB组件,或一个C DLL。Delphi太奇特了,不值得推荐,但在那里编写DLL将非常容易。
Sub test()

    Dim doc As Document
    Dim pg As page
    Set doc = ActiveDocument

    Dim h0 As Double, w0 As Double

    Set pg = doc.Pages.Item(1)
    pg.GetSize w0, h0


    Debug.Print "h orig=" + CStr(h0) + ",w orig=" + CStr(w0) + " unit=" + CStr(doc.Unit)

End Sub