從a.xls裡面去執行b.xls的commandbutton1;c.xls的commandbutton1.....等
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
從a.xls裡面去執行b.xls的commandbutton1;c.xls的commandbutton1.....等
如題,
Private Sub CommandButton1_Click()
Call 更新
Workbooks.Open ("C:\Documents and Settings\b.xls") '呼叫b.xls的模組
Application.Run ("b.xls!Sheet1.CommandButton1_Click")
Workbooks.Open ("C:\Documents and Settings\c.xls")
Application.Run ("c.xls!Sheet1.CommandButton1_Click")
Workbooks.Open ("C:\Documents and Settings\d.xls")
Application.Run ("d.xls!Sheet1.CommandButton1_Click")
end sub
---------------------------------------------------------------------------------------------------以上是我的程式碼
可是我按F8一行一行去執行時不知道為什麼都執行到b.xls後,就跳到了 第1行的程式去了
請問錯在哪兒呢? |
|
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
12#
發表於 2013-4-14 16:32
| 只看該作者
回復 11# GBKEE
咦?我本來也有想過是不是『'Workbooks("004.xls").Close 』造成的
但是後來我想
我主要不是在執行001.xls sheet1的程序嗎?
我關閉的是其它非001.xls的活頁簿,難道這樣也會停止了001.xls sheet1 VBA的運作嗎?
我真的沒有這方面的觀念~ |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
11#
發表於 2013-4-14 15:36
| 只看該作者
本帖最後由 GBKEE 於 2013-4-14 16:46 編輯
回復 10# gkld
每一個活頁簿的 [更新] 因活頁簿關閉而停止了VBA的運作- 'Workbooks("004.xls").Save 註解掉不執行
- 'Workbooks("004.xls").Close 註解掉不執行
複製代碼 001.xls的 CommandButton1_Click- Private Sub CommandButton1_Click()
- Dim XPath As String, E As Variant
- Call 更新
- XPath = "C:\Documents and Settings\gkld\桌面\my kp\資料庫\上市類股"
- Application.ScreenUpdating = False
- For Each E In Array("004.xls", "005.xls", "016.xls", "017.xls", "018.xls", "019.xls")
- Run "'" & XPath & "\" & E & "'!資料更新.更新"
- Workbooks(E).Close True
- Next
- Application.ScreenUpdating = True '更新成功就出現ok
- MsgBox "OK"
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
10#
發表於 2013-4-13 22:42
| 只看該作者
回復 7# GBKEE
板大,我依你的指導修正了001.xls的程式碼後,
也是面臨了同樣的問題說,都是執到了004.xls的Run "'" & XPath & "\004.xls'!資料更新.更新"後,就跳出來了
我附上相關檔案
再請釋疑
更新.rar (324.14 KB)
|
|
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
9#
發表於 2013-4-13 21:55
| 只看該作者
回復 7# GBKEE
板大,能否再次請教- 1. Workbooks.Open ("C:\Documents and Settings\資料庫\004.xls")
- 2. Workbooks("004.xls").Activate
- 3. Application.Run ("004.xls!Sheet1.CommandButton1_Click")
- 4.
- 5. Workbooks.Open ("C:\Documents and Settings\資料庫\005.xls")
- 6. Workbooks("005.xls").Activate
- 7. Application.Run ("005.xls!Sheet1.CommandButton1_Click")
複製代碼 上述的程式碼,與你所指導的 「、檔案已啟時 只需: 活頁簿名稱!模組名稱.程序名稱」
是否一致??
小弟不是很了解,為何我所寫的程式碼,這樣只能執行到004.xls!Sheet1.CommandButton1_Click完後,就沒了
後面的005.xls!Sheet1.CommandButton1_Click就沒有執行了
而且還是在沒有出現偵錯的情況下~ |
|
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
8#
發表於 2013-4-13 19:36
| 只看該作者
回復 7# GBKEE
哦…原來還可以這樣呀!? 待會再去跑跑看
可是板大…我還是很好奇…原本的寫法 是錯在哪兒?
我執行時,沒有出現錯誤,但卻只是跑到更新完 004.xls的檔案就跳出來了,結束了
不曉得原因出在哪兒說 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
7#
發表於 2013-4-13 16:49
| 只看該作者
回復 6# gkld
是這樣的- Sub 更新() '001.xls的「更新資料」
- Dim m As Date, n As Date
- Dim XPath As String
- XPath = ThisWorkbook.Path
- '你的所有檔案都在同一資料夾: C:\Documents and Settings\gkld\My Documents\
- '檔案未開啟: 檔案名稱需是完整檔案名稱 前後 加 ' -> '檔案名稱'!模組名稱.程序名稱
- Run "'" & ThisWorkbook.Path & "\004.xls'!資料更新.更新"
-
- '檔案已啟時 只需: 活頁簿名稱!模組名稱.程序名稱
- Run "004.xls!資料更新.更新"
- Run "005.xls!資料更新.更新" '...
- Run "006.xls!資料更新.更新" '...
- Run "007.xls!資料更新.更新" '...
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
6#
發表於 2013-4-12 18:46
| 只看該作者
回復 5# mark15jill
唉呀… 是我失禮了!!
我把檔案放上來,或許比較清楚
主要是我要執行001.xls的「更新資料」按扭,想透過這個動作去呼叫004.xls裡的CommandButton1、005xls的CommandButton1
015.xls裡的CommandButton1…等更多xls裡的CommandButton1,但是都是只跑到004.xls裡的CommandButton1後,就停了
再請各位高手釋疑。
新資料夾.rar (260.4 KB)
|
|
|
|
|
|
|
暱稱: 隨風飄蕩的羽毛 頭銜: [御用]潛水艇
高中生 
- 帖子
- 852
- 主題
- 79
- 精華
- 0
- 積分
- 918
- 點名
- 0
- 作業系統
- Windows 7 , XP
- 軟體版本
- Office 2007, Office 2003,Office 2010,YoZo Office
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 宇宙
- 註冊時間
- 2011-4-8
- 最後登錄
- 2024-2-21
|
5#
發表於 2013-4-12 08:07
| 只看該作者
回復 mark15jill
樓上的先進:上述程式碼是a.xls裡面的一個模組
你分亨的文章,同樣都是使用到 app ...
gkld 發表於 2013-4-11 20:41 
老話常談... No Have 檔案 No Have Answer... |
|
多做多想多學習,少看少錯少迷途
多做=多多練習,多多編寫。
多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
多學習=學習人家的發問並解答,學習人家的寫法
少看=只看不做也枉然
|
|
|
|
|
- 帖子
- 44
- 主題
- 7
- 精華
- 0
- 積分
- 51
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2012-11-18
- 最後登錄
- 2022-8-6

|
4#
發表於 2013-4-11 20:41
| 只看該作者
回復 2# mark15jill
樓上的先進:- Workbooks.Open ("C:\Documents and Settings\資料庫\004.xls")
- Workbooks("004.xls").Activate
- Application.Run ("004.xls!Sheet1.CommandButton1_Click")
- Workbooks.Open ("C:\Documents and Settings\資料庫\005.xls")
- Workbooks("005.xls").Activate
- Application.Run ("005.xls!Sheet1.CommandButton1_Click")
複製代碼 上述程式碼是a.xls裡面的一個模組
你分亨的文章,同樣都是使用到 application.run
所以我這樣的寫法應該也是同樣意思
只是我不了解…為何我執行起來,那個004檔案裡的commandbutton1是可以被呼叫出來的
但是之後程式就結束了,無法執行到005.xls的commandbutton1 |
|
|
|
|
|
|