返回列表 上一主題 發帖

Activate與Open的差別跟Windows的定義

請問各位大大,有兩個問題想請教,

問題一

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)

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題