• ExecuteExcel4Macro (宏函数)使用说明


    用ExecuteExcel4Macro从未打开的Excel工作簿中读取数据(转载)
    从另外一个未打开的Excel文件中读取数据的函数
    下面这个函数调用XLM宏从未打开的工作簿中读取数据.
    *注意:  该函数不能用于公式.

    GetValue函数,需要以下四个变量
    path:  未打开的Excel文件的路径 (e.g., "d: est") 
    file:  文件名(e.g., "test.xls") 
    sheet: 工作表的名称 (e.g., "Sheet1") 
    ref:   引用的单元格 (e.g., "C4") 
    '*********函数如下
    Private Function GetValue(path, file, sheet, ref)
    '   从未打开的Excel文件中检索数据
        Dim arg As String
    '   确保该文件存在
        If Right(path, 1) <> "" Then path = path & ""
        If Dir(path & file) = "" Then
            GetValue = "File Not Found"
            Exit Function
        End If
    '   创建变量
        arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
          Range(ref).Range("A1").Address(, , xlR1C1)
    '   执行XLM 宏
        GetValue = ExecuteExcel4Macro(arg)
    End Function


    使用该函数:
    将该语句复制到VBA的模块中,然后,在适当的语句中调用该函数. 下面的例子显示D: est 下的文件test.xls 的Sheet1中的单元格”A1”的内容.
    Sub TestGetValue()
        p = "d: est"
        f = "test.xls"
        s = "Sheet1"
        a = "A1"
        MsgBox GetValue(p, f, s, a)
    End Sub

    下面还有一个例子.这个语句从一个未打开的文件中读取1200个数值(100行12列),并将结果填到当前工作表中.
    Sub TestGetValue2()
        p = "d: est "
        f = "test.xls"
        s = "Sheet1"
        Application.ScreenUpdating = False
        For r = 1 To 100
            For c = 1 To 12
                a = Cells(r, c).Address
                Cells(r, c) = GetValue(p, f, s, a)
            Next c
        Next r
        Application.ScreenUpdating = True
    End Sub

    说明: 如果工作簿处于隐藏状态,或者工作表是图表工作表,将会报错.


    ExecuteExcel4Macro 使用说明

    ExecuteExcel4Macro 方法
    請參見 套用至 範例 特定 
    執行 Microsoft Excel 4.0 巨集函數,然後傳回此函數的結果。傳回結果的型態取決於函數的型態。

    expression.ExecuteExcel4Macro(String)

    expression  選擇性的。傳回 Application 物件的運算式。

    String  必選的 String 資料型態。不帶等號的 Microsoft Excel 4.0 巨集語言函數。所有參照必須是像 R1C1 這樣的字串。如果 String 內包含雙引號,則必須寫兩個。例如,要執行此巨集函數 =MID("sometext",1,4),String 應寫成 [MID(""sometext"",1,4)]。

    註解
    Microsoft Excel 4.0 巨集不在目前活頁簿或工作表的環境中求值。也就是說所有的參照都應該是外部參照,而且需要明確指定活頁簿名稱。 例如,要在 Book1 中執行 Microsoft Excel 4.0 巨集 [My_Macro] ,必須使用 [Book1!My_Macro()]。如果不指定活頁簿名稱,此方法將失敗。

    範例
    此範例對 Sheet1 的 C3 儲存格執行 GET.CELL(42) 巨集函數,然後在訊息方塊中顯示結果。GET.CELL(42) 巨集函數傳回目前視窗左限到目前儲存格的左邊之間的水平距離。Visual Basic 中沒有與此巨集函數直接等價的函數。

    Worksheets("Sheet1").Activate
    Range("C3").Select
    MsgBox ExecuteExcel4Macro("GET.CELL(42)")


    '***直接讀取c: est.xls(不打開)中sheet1.a1的值另一種參考代碼 (比一楼的写法简单许多)
    Sub TestGetValue()
       str0 = "'C:[test.xls]Sheet1'!R1C1"
    MsgBox ExecuteExcel4Macro(str0)
    End Sub
    )

    雖然Excel VBA的相關說明只有一點點,但我覺的
    ExecuteExcel4Macro似乎好像有更多的用法,有待大家一同去發掘了

  • 相关阅读:
    Ubuntu Server 17.04安装GNOME指令
    docker应用笔记
    无线网络连接配置
    bind9的一些配置
    关于linux下的文件权限
    命令行模式下设置时区
    Linux下SSL证书申请以及配置到Nginx
    编译安装Nginx到Linux
    网页画流程图
    为什么Java字符串是不可变对象?
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713823.html
Copyright © 2020-2023  润新知