返回列表 上一主題 發帖

[發問] 呼叫外部獨立執行檔案巨集

回復 3# singo1232001

感謝singo1232001大大的回覆,您的附檔小弟已測試,但有問題請教,
Workbooks("a1").Sheets("工作表1").[a1] = i: DoEvents
一開始都出錯在這邊,更改如下後可以執行,
Workbooks("a1.xlsm").Sheets("工作表1").[a1] = i: DoEvents
(a2,a3同步更改)

但a2及a3仍然是在a1的檔案架構下以唯讀模式開啟執行,
唯讀模式開啟之檔案a2,a3均可完成執行巨集,
已先行手動獨立執行a2及a3檔未執行巨集,
到此步驟共有5個檔案開啟1a1,1a2,1a3,1a2唯讀,1a3唯讀
不知道哪邊有錯還請指導指導,感恩!

小弟構想是在A檔案呼叫B檔案以獨立執行方式開啟並執行巨集,
但A檔案可以繼續進行手動工作或其他巨集,而B檔案持續執行巨集,
    Dim xlApp As Excel.Application
    Dim book As Excel.Workbook
    Dim sheet As Excel.Worksheet
    Set xlApp = CreateObject("excel.Application")
    Set book = xlApp.Workbooks.Open("D:\公式.xls")
    此處可以獨立執行開啟B檔案
    Application.Run "'D:\公式.xls'!Module1.msg"
    此處無法以獨立執行B檔案msg(),仍以A檔案執行msg()

上述寫法仍需克服以下問題:
一、可開啟獨立執行B檔案,但無法執行B檔案巨集;或   可執行巨集但卻是以A檔案架構下開啟
二、因程式碼撰寫在A檔案,故呼叫B檔案執行巨集未完成前,控制權仍在B檔案,無法呼叫後歸還控制權

以上還請大大指導指導,感激喔!
我是斯多

TOP

本帖最後由 singo1232001 於 2021-7-11 18:58 編輯

回復 1# reangame


此為範例檔案
記得開啟時 每個檔案 由於是xlsm檔案 必須先開啟一次 啟用巨集 重新存檔一次
方可以正常運行

更正
Application.Run "公式!Module1.msg"
或
Application.Run "公式.xls!Module1.msg"

Downloads.zip (96.14 KB)

TOP

本帖最後由 singo1232001 於 2021-7-11 17:36 編輯

Application.Run "'公式'!Module1.msg"
或
Application.Run "'公式.xls'!Module1.msg"

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題