幫忙修改某個Excel VBA,透過巨集要將xslm的某個工作表(Worksheet)複製到另一個xls活頁簿(Workbook),執行Sheets("TheSheet").Copy Before:=AnothorXLS.Sheets("Boo"),卻出現以下錯誤:

執行階段錯誤 '1004':

Excel無法將工作表插入目的地活頁簿,因為它包含的列和欄比來源活頁簿少。若要移動或複製資料至目的地活頁簿,您可以選取資料,然後使用[複製]與[貼上]命令將它插入另一個活頁簿的工作表。
Excel cannot insert the sheets into the destination workbook, because it contains fewer rows and columns than the source workbook. To move or copy the data to the destination workbook, you can select the data, and then use Copy and Paste commands to insert it into the sheets of another workbook.

懸疑之處在於同一組檔案使用者測試回報經運作正常,讓我一直懷疑是自己操作步驟有誤導致,而使用者遠在天邊無從目睹操作過程,就只能透過電話及Skype一直在操作過程及環境細節打轉。最後終於發現一點明顯差異: 使用者用Excel 2003,而我用Excel 2010。之前沒想到此點,是認定使用者既能開啟xlsm,應是Excel 2007+版本,忽略了可能是靠相容套件無縫整合。而挖出Excel 2003 vs Excel 2007差異,修正方向後才知是是我Excel江湖經驗不足,不然早該抓出問題。

所謂的目的地列與欄比較少,指的是Excel 2007+支援1,048,576列x16,384欄,而Excel 2003只支援65,536列x256欄,所以將xlsm(Excel 2007格式)的工作表複製到xls(Excel 2003格式)時,就註定要滿出來而報錯~ (參考)

知道問題來源,要解決只是小菜一碟。將xls改存成xlsx,問題豁然而解~


Comments

# by 水晶燕窩仙子

thanks for sharing.

Post a comment