Board logo

標題: excel 2007/2010開啟excel 2003編輯的vba相容性問題 [打印本頁]

作者: lalalada    時間: 2012-8-5 02:45     標題: excel 2007/2010開啟excel 2003編輯的vba相容性問題

原本是在2003環境下撰寫的
跑起來沒問題
但是今天將檔案移至另一台電腦以excel 2010開啟時出現錯誤
以2007開啟亦同
" 執行階段錯誤:'1004':
   應用程式或物件定義上的錯誤 "
發生錯誤的程式碼為
Workbooks("Trading.xls").Sheets("DataSource").Range("J" & Rows.Count).End(xlUp).Row
經過測試之後
發現應該是因為有其它活頁簿開起所致(本例中是來自於先前使用了application.workbooks.add)
在原本2003下
workbooks("Trading.xls")會從Trading.xls這個檔案的工作表"DataSource"取得儲存格資料
但是到了2007/2010則無法
以下是我的推測:
測試一段程式碼
  1. Sub s()
  2. MsgBox Workbooks("Trading.xls").Sheets("DataSource").Range("J" & Rows.Count).End(xlUp).Row
  3. MsgBox CStr(Workbooks("Trading.xls").Sheets("DataSource").Cells(2, 10))
  4. End Sub
複製代碼
可以執行並回報正確資料
但若ActiveWorkbook 不是 Trading.xls時 則發生錯誤
像是另外開啟一個EXCEL檔(回到原先檔案,新增活頁簿時,ActiveWorkbook會變成新增的活頁簿)
想請問此相容性問題(我猜的對嗎?)及解決辦法
感激不盡!! 不然只好找2003來灌了....
作者: GBKEE    時間: 2012-8-5 06:27

本帖最後由 Hsieh 於 2012-8-5 07:07 編輯

回復 1# lalalada
我版本是2003 之前所回覆程式中有.Rows.Count 在 2007 2010 中執行也是會出錯
指明工作表 試試看可否解決
  1. Option Explicit
  2. Sub Ex()
  3.     With Workbooks("Trading.xls").Sheets ("DataSource")
  4.         MsgBox .Range("J" & .Rows.Count).End(xlUp).Row
  5.         MsgBox CStr(.Cells(2, 10))
  6.     End With
  7. End Sub
複製代碼

作者: lalalada    時間: 2012-8-5 14:12

回復 2# GBKEE

感謝版大!
這段程式碼經測試後可以使用
可是我不懂這跟原本的差別在哪...? 為什麼這樣就可以
所以2007以後的版本不能使用workbooks(index)方法引入資料嗎...."
作者: GBKEE    時間: 2012-8-5 14:31

回復 3# lalalada
2007以上的    Rows.Count   (ROWS 是物件)
這就如 工作表模組 Code (程式碼) 中的 RANGE  (物件名稱) 如沒指名工作表名稱
當作用中的工作表  不是工作表模組 的工作表 會出錯一樣的

所以2007以後的版本不能使用workbooks(index)方法引入資料嗎...."   
在  workbooks(1) 的CODE(程式碼)中  Msgbox   workbooks(2).Name 試試看
作者: lalalada    時間: 2012-8-5 15:41

本帖最後由 lalalada 於 2012-8-5 15:43 編輯

回復 4# GBKEE

感謝版大!
測試 msgbox workbooks(2).name 會失敗
只有 msgbox workbooks(1).name 可以
我想應該不是row的問題
後來查到了這個 http://support.microsoft.com/kb/928283/zh-tw
依照其指示加入 Application.DefaultSaveFormat = xlWorkbookNormal
竟然就可以用了= =
但不是很懂發生什麼事就是了
大概跟2007之後變成xlsm/xlsx有關?
而且在2007之後會發現可以開出兩個以上的VBA編輯器
另外我發現在2007中 使用.SaveAs方法好像無法儲存檔案成.xlsm/.xlsx




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)