Activate與Open的差別跟Windows的定義
- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
請問各位大大,有兩個問題想請教,
問題一
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 設為 做動中.
1. 先開啟一個活頁簿,再從該活頁簿中用 Workbooks.Open 開啟另一個活頁簿.(若個別手動開啟有可能互相看不到)
2. 執行下列指令 :
Workbooks("來源檔案.xls").Sheets("要拷貝的工作表").Copy Before:=Workbooks("目的檔案.xls").Sheets(Sheets.Count) |
|
|
|
|
|
|
|