標題:
Activate與Open的差別跟Windows的定義
[打印本頁]
作者:
學到老死
時間:
2016-3-27 12:27
標題:
Activate與Open的差別跟Windows的定義
請問各位大大,有兩個問題想請教,
問題一
開啟活頁簿的時候,程式語言分別為Windows("製作廠商明細表.xlsm").Activate 跟Windows("製作廠商明細表.xlsm").Open
的差異?
問題二
Workbooks.Open "C:\Users\Andy\Desktop\VBA程式碼紀錄本\製作廠商明細表\總公司資料.xlsm"
跟
Windows("製作廠商明細表.xlsm").Activate
後者,,我的理解是說只要這台電腦有此活頁簿名稱(製作廠商明細表),便開啟作業。
優點上,可讀性比前者高。那至於前者,是什麼情況下會用到呢?
兩個問題,想請教大大,想了兩個禮拜,還在苦惱如何從B活頁簿複製到A活頁簿。。。。難過。..
作者:
luhpro
時間:
2016-3-28 00:33
請問各位大大,有兩個問題想請教,
問題一
Windows.Activate 與 Workbooks.Open 的差異?
學到老死 發表於 2016-3-27 12:27
剛剛我試做後,得出結論如下: (試做環境: Excel 2000版本)
首先
Windows("製作廠商明細表.xls").Activate
若 "製作廠商明細表.xls" 活頁簿尚未讀入記憶體中時,
會出現錯誤訊息 :
陣列索引超出範圍
因為在已開啟的 活頁簿物件群組 中找不到有此名稱的活頁簿. (可在即時運算視窗用 for each a in Workbooks:debug.Print a.name:next 取得記憶體現有活頁簿名稱列表)
然而
Workbooks.Open "C:\Users\Andy\Desktop\VBA程式碼紀錄本\製作廠商明細表\總公司資料.xlsm"
則是到 指定的目錄(若參數有含路徑) 或是 目前的目錄(可用 Curdir 取得) 找到該檔案開啟並設為 做動中,
但若此檔案已存在記憶體中則會詢問是否要關閉再重開該檔案.
意即 Activate 是在 "記憶體中" 找到物件(對象不限活頁簿)並設為 做動中,
而 Workbooks.Open 是在 "硬碟中" 找到檔案(只能是Excel檔案)並設為 做動中,
所以若檔案未開則應用 Open 開啟, 否則應用 Activate 設為 做動中.
如何從B活頁簿複製到A活頁簿
1. 先開啟一個活頁簿,再從該活頁簿中用 Workbooks.Open 開啟另一個活頁簿.(若個別手動開啟有可能互相看不到)
2. 執行下列指令 :
Workbooks("來源檔案.xls").Sheets("要拷貝的工作表").Copy Before:=Workbooks("目的檔案.xls").Sheets(Sheets.Count)
作者:
訪客
時間:
2016-3-28 15:52
回復
1#
學到老死
簡單的說Open是從儲存裝置中開啟活頁簿,Activate則是從已開啟的活頁簿(至少2個或以上)中選擇哪個活頁簿為作用中。
成為作用中的活頁簿後,接下來的屬性、物件...等操作,只針對作用中的活頁簿。
另外(問題一)裡面並沒有Windows("製作廠商明細表.xlsm").Open這種語法。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)