救助!執行階段錯誤 "1004",請內看 感謝了!
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
救助!執行階段錯誤 "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)
------------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
別用copy,系統剪貼簿無法容納太多的資料。
改存到陣列中,寫入新的位置,就不會有這種現象了。
oobird 發表於 2011-8-13 10:59 
只有懂一點點陣列(就只知道把數字或文字寫入陣列再用迴圈取出之類而已..),,但完全不知要怎開始下手 改存到陣列中,寫入新的位置 能否寫一個範列呢 感恩~~! |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 icestormerss 於 2011-8-13 15:33 編輯
其實還是看不懂你的問題。
看你的程式碼是複製到同一活頁簿,有何意義嗎?
For i = 1 To 100
Worksheets ...
oobird 發表於 2011-8-13 14:58 
用1到100 只是我用來測到底到在第幾張會出錯而已.我發現(今天的.)全都是在第48跟49張工作表時就一定出錯..
主要是要工作表複製後 再用WEB查詢(配合輸入股號,更新後(所以複製後的工作表內容會隨者股號而變動但基本格式是一樣的)存起來,
現在 全都是卡在那個問題上
(變成只要出錯..我就得關掉 重開 然後又要重新更新後才能再做後頭的工作)
不知我這樣說 懂嗎?怕我說的不夠清楚~~ 能不能請你寫一個簡單的範例 把工作表A 複製後 放入陣列中 ,再放到最後一個工作表之後? 感謝拉~~ |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
能不能請你寫一個簡單的範例 把工作表A 複製後 放入陣列中 ,再放到最後一個工作表之後?
oobird 發表於 2011-8-13 18:11 
感謝各位幫忙 我去試看看^^ |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 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 |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 icestormerss 於 2011-8-13 20:36 編輯
oobird 大 請問 有法子把WEB查詢內的連結一起COPY過去?
剛才的是可以運作了但變成只有純文字 WEB查詢的功能郤消失了 感謝你花時間幫我^^
股票代碼更新.rar (7.13 KB)
我把檔案上傳 程式是可以跑也很順利不過變成純文字後 就失去WEB查詢功能了說 不知你有沒有什麼法子可以可以連同WEB 查詢功能也一起併COPY過去? |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 icestormerss 於 2011-8-13 21:18 編輯
回復 12# oobird
有了可以連同WEB查詢功能都COPY過去了.不過..出現1個新問題(原本另一個問題好了)
1:如果代碼是在A5輸入(輸入後按下ENTER,進行更新)
剛COPY過去的工作表雖然也有WEB查詢功能在但郤不是連結在同一工作表內的A5而是連結在SHEET1中的A5格
:收回第二個問題 ,再我存檔後重開 可以正常自動按目標格(A5)內的資料數字變動而自動更新了^^
OOBIRD大 針對第一個問題有法子嗎^^? |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 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 查詢 我是看這裡學的 |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
回復 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查詢的參數連結格 沒法連在自己工作表上說 不知有人有法子嗎??
(原本是想說不然就複製過去後再用程式去改他的連結.但發現(我先用巨集錄)根本錄不到,我也完全不知怎下手寫) |
|
|
|
|
|
|
|
- 帖子
- 16
- 主題
- 2
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2011-8-13
- 最後登錄
- 2011-8-19
|
本帖最後由 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改寫
再次感謝你撥時間回覆^&^ |
|
|
|
|
|
|
|