返回列表 上一主題 發帖

救助!執行階段錯誤 "1004",請內看 感謝了!

救助!執行階段錯誤 "1004",請內看 感謝了!

本帖最後由 icestormerss 於 2011-8-13 14:57 編輯

由於需要 將工作表 複製 但發現在複製到次數大約5到2 30次時(大都在20次左右)就會產生一個錯誤

錯誤:執行階段錯誤 "1004": class worksheet的copy方法失敗

一開始我以為是我寫錯.然後發現好像不是 我就好奇的實驗.只要我的工作表(要複製的)內容越多(像有比較圖)有時大約10次之內就會出現錯誤

隨者我把工作表內容越簡精它出錯的次數就越後面(完全空白的工作表我試過到600次都還不會出錯..)

然而,只要出了錯誤,我重開EXCEL後,錯誤不見了,再重行執行程式後問題一樣存在,只是會發生錯誤的次數,可能又變動(也許剛才第10次出錯,這次換20次)


不知有沒有高手能幫我解決這問題?

我只是想單純的複製工作表到最後一個位置去

原本寫的是
shtcount =worksheets.count
worksheets(1).copy after:=worksheets(shtcount)

-------------------------------------------------------------------------------------

別用copy,系統剪貼簿無法容納太多的資料。
改存到陣列中,寫入新的位置,就不會有這種現象了。
oobird 發表於 2011-8-13 10:59



只有懂一點點陣列(就只知道把數字或文字寫入陣列再用迴圈取出之類而已..),,但完全不知要怎開始下手 改存到陣列中,寫入新的位置 能否寫一個範列呢 感恩~~!

TOP

本帖最後由 icestormerss 於 2011-8-13 15:33 編輯
其實還是看不懂你的問題。
看你的程式碼是複製到同一活頁簿,有何意義嗎?
For i = 1 To 100
Worksheets ...
oobird 發表於 2011-8-13 14:58


用1到100 只是我用來測到底到在第幾張會出錯而已.我發現(今天的.)全都是在第48跟49張工作表時就一定出錯..

主要是要工作表複製後 再用WEB查詢(配合輸入股號,更新後(所以複製後的工作表內容會隨者股號而變動但基本格式是一樣的)存起來,
現在 全都是卡在那個問題上
(變成只要出錯..我就得關掉 重開 然後又要重新更新後才能再做後頭的工作)

不知我這樣說 懂嗎?怕我說的不夠清楚~~ 能不能請你寫一個簡單的範例 把工作表A 複製後 放入陣列中 ,再放到最後一個工作表之後? 感謝拉~~

TOP

能不能請你寫一個簡單的範例 把工作表A 複製後 放入陣列中 ,再放到最後一個工作表之後?
oobird 發表於 2011-8-13 18:11



感謝各位幫忙 我去試看看^^

TOP

本帖最後由 icestormerss 於 2011-8-13 19:56 編輯

又來麻煩各位了

剛才我去執行 它出現 在那一行出錯(我完全沒有改動 ,我開一個全新空白的 再把程式碼 貼上後執行)
請問 那個問題是什麼意思呢?

怪了.我剛才去把工作表刪除(不小心連SHEET2跟3(預設的)都刪了)神奇的事發生了 居然沒有錯誤而順利執行了...

Sub yy()
Dim a, i%
a = Sheet1.UsedRange
For i = 1 To 50
With Sheets.Add(After:=Sheets(Sheets.Count))
.Name = "w" & i
.[a1].Resize(UBound(a), UBound(a, 2)) = a  <<    執行階段錯誤 1004:應用程式或物物定義上的錯誤
                                       
End With
Next
End Sub

TOP

本帖最後由 icestormerss 於 2011-8-13 20:36 編輯

oobird 大 請問 有法子把WEB查詢內的連結一起COPY過去?
剛才的是可以運作了但變成只有純文字 WEB查詢的功能郤消失了 感謝你花時間幫我^^ 股票代碼更新.rar (7.13 KB)

我把檔案上傳  程式是可以跑也很順利不過變成純文字後 就失去WEB查詢功能了說 不知你有沒有什麼法子可以可以連同WEB 查詢功能也一起併COPY過去?

TOP

本帖最後由 icestormerss 於 2011-8-13 21:18 編輯

回復 12# oobird


有了可以連同WEB查詢功能都COPY過去了.不過..出現1個新問題(原本另一個問題好了)


1:如果代碼是在A5輸入(輸入後按下ENTER,進行更新)
剛COPY過去的工作表雖然也有WEB查詢功能在但郤不是連結在同一工作表內的A5而是連結在SHEET1中的A5格


:收回第二個問題 ,再我存檔後重開 可以正常自動按目標格(A5)內的資料數字變動而自動更新了^^



OOBIRD大 針對第一個問題有法子嗎^^?

TOP

本帖最後由 icestormerss 於 2011-8-13 21:33 編輯
看不懂。如果代碼是在A5輸入(輸入後按下ENTER,進行更新)~這段程式在哪裡?你應該修改這段程式呀。
oobird 發表於 2011-8-13 21:17



這樣說好了 如果A5格 我輸入2374 正常來說 WEB查詢會自動更新(這我有設好了)
按以前我直接用COPY過去後 新的工作表上的WEB查詢連結會自動連結在新的工作表上的A5 而不是在原本(SHEET1)上的A5

換言之.以前我用COPY在複製後 二個工作表各自有各自的WEB 查詢功能
(在SHEET1上的A5輸入數字只會更新SHEET1的,在W1上的A5輸入數字也只會更新W1的)
但現在郤會變成 W1上的連結到SHEET1上的A5(當SHEET1上的A5格數字變動時二張工作表會一起更新到同一家公司上)

當然這部份可以手動改,不過WEB查詢不止一個 如果每一個COPY過去的都要一個一個WEB 查詢改它 ,就麻煩了說

不知我這樣說 會不會說不明白呢^^

我剛才試者用巨錄看能不能錄到手動點擊 [WEB查詢區]>參數上 以下列儲存格做為參數值來源
結果根本錄不到說~~

http://jinnsblog.blogspot.com/2008/10/excel-query-dynamically-update-data.html <<自動更新的WEB 查詢 我是看這裡學的

TOP

回復 15# icestormerss


昨晚花幾小時在那查看看網路資料及測試
發現真的好像都是固定次數就會出錯
複製前張數--複製中出錯的張數
2---------------105
3---------------103
4---------------102
5----------------99   
6----------------99   
7----------------98   
8----------------96   
9----------------95   
10---------------93   
另外我發現 如果用的是 :
worksheets(1).copy
就算是到了200張workbooks也不會出錯呢..

然後我就想到.不然.先用worksheets(1).copy 後再用 MOVE的方法移回來,結果錯誤換成104:MOVE 方式失敗..(大約是100張)

我在想會不會是對於在一定時間內(打開-關閉EXCEL)寫入同一workbook 內的有次數限制? 不然為什麼 用worksheets(1).copy 到200也不會出錯?

另外OOBIRD大的程式碼現在都很順利可以執行.但還是卡在同一個問題 WEB查詢的參數連結格 沒法連在自己工作表上說 不知有人有法子嗎??
(原本是想說不然就複製過去後再用程式去改他的連結.但發現(我先用巨集錄)根本錄不到,我也完全不知怎下手寫)

TOP

本帖最後由 icestormerss 於 2011-8-14 11:09 編輯
還是沒說到重點
如你sheet1的a5是2317,你用任何方法copy,每個新的表上都是2317,不可能改變成別的。
而 ...
oobird 發表於 2011-8-14 10:32


SORRY 忘了附檔 我再弄一次
股票代碼更新1.rar (7.79 KB) <<這是根據OOBIRD大的提供的程式碼執行的

在SHEET1的B1是參數來源格(WEB 查詢功能)
只要數字變動在右下的E8(右擊可以打開參數>以SHEET1!$B$1格為參數值來源)會整個自動更新

然而 如果是採用worksheets(1).copy after:worksheets(worksheets.count)方式
當SHEET1的B1數字變動只會更新SHEET1上的E8
當W1的B1數字變動也只會更新W1上的E8

使用PASTE方式的做法 也都會有WEB查詢
只是變成W1工作表的E8也是連結到SHEET1的B1(但我需要的是連結在W1上的B1)


而且用巨集的方式沒法錄到手動改參數來源格,我也不知能不能透過VBA改寫

再次感謝你撥時間回覆^&^

TOP

        靜思自在 : 生氣,就是拿別人的過錯來懲罰自己。
返回列表 上一主題