返回列表 上一主題 發帖

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

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

請問大大們,想用A檔案程式碼呼叫獨立執行B檔案sub msg(),   
    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()
  
    請問大大們該如何撰寫呢?  
    請指導指導,謝謝
我是斯多

回復 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

回復 6# singo1232001

感謝singo1232001大大,
小弟在A檔案加入Sub runVBScript(),的確可以實現A檔案控制B檔案執行巨集了,
也找到在A檔案VBA程式碼控制vbs檔案的方法,非常感謝您!
  1. Sub runVBScript()
  2.     ChDrive "C:"
  3.     ChDir "C:\Users\reang\Downloads\2"
  4.     Shell "cscript vba3.vbs"
  5. End Sub
複製代碼
我是斯多

TOP

2.rar (31.35 KB) 回復 6# singo1232001
我是斯多

TOP

本帖最後由 reangame 於 2021-7-15 08:51 編輯

回復 10# singo1232001


報告singo1232001大大,小弟是2003版本,小弟尚未理解您的程式碼,但調整一下經測試可用您的檔案一鍵執行喔!!!
  1.     a.WriteLine "obje2.Application.Run """ & Chr(39) & [a1] & "a2.xlsm" & Chr(39) & "!Module1.forX"""
  2.      
  3.     For i = 15 To 19
  4.     a.WriteLine Cells(i, 1)
  5.     Next
複製代碼
我是斯多

TOP

3.rar (32.78 KB) 回復 10# singo1232001
我是斯多

TOP

本帖最後由 reangame 於 2021-7-16 00:07 編輯

回復 10# singo1232001


https://docs.microsoft.com/zh-tw/office/vba/api/excel.application.automationsecurity
https://ithelp.ithome.com.tw/articles/10159964
不知道有沒有用,敬請參考看看
我是斯多

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題