Activate與Open的差別跟Windows的定義
- 帖子
- 44
- 主題
- 14
- 精華
- 0
- 積分
- 58
- 點名
- 0
- 作業系統
- Window 8
- 軟體版本
- 2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-8-15
- 最後登錄
- 2017-4-18
|
Activate與Open的差別跟Windows的定義
請問各位大大,有兩個問題想請教,
問題一
開啟活頁簿的時候,程式語言分別為Windows("製作廠商明細表.xlsm").Activate 跟Windows("製作廠商明細表.xlsm").Open
的差異?
問題二
Workbooks.Open "C:\Users\Andy\Desktop\VBA程式碼紀錄本\製作廠商明細表\總公司資料.xlsm"
跟
Windows("製作廠商明細表.xlsm").Activate
後者,,我的理解是說只要這台電腦有此活頁簿名稱(製作廠商明細表),便開啟作業。
優點上,可讀性比前者高。那至於前者,是什麼情況下會用到呢?
兩個問題,想請教大大,想了兩個禮拜,還在苦惱如何從B活頁簿複製到A活頁簿。。。。難過。.. |
|
|
|
|
|
|
- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
2#
發表於 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 設為 做動中.
1. 先開啟一個活頁簿,再從該活頁簿中用 Workbooks.Open 開啟另一個活頁簿.(若個別手動開啟有可能互相看不到)
2. 執行下列指令 :
Workbooks("來源檔案.xls").Sheets("要拷貝的工作表").Copy Before:=Workbooks("目的檔案.xls").Sheets(Sheets.Count) |
|
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 8
- 點名
- 0
- 作業系統
- Window7
- 軟體版本
- Office2007
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2016-3-18
- 最後登錄
- 2024-4-11
|
3#
發表於 2016-3-28 15:52
| 只看該作者
回復 1# 學到老死
簡單的說Open是從儲存裝置中開啟活頁簿,Activate則是從已開啟的活頁簿(至少2個或以上)中選擇哪個活頁簿為作用中。
成為作用中的活頁簿後,接下來的屬性、物件...等操作,只針對作用中的活頁簿。
另外(問題一)裡面並沒有Windows("製作廠商明細表.xlsm").Open這種語法。 |
|
為何要個人簽名
|
|
|
|
|