EXCEL在新工作表某格,抓取另一舊工作表所有sheet名稱
嗨~
想再來請教EXCEL高手問題^^"
這一次想要作一個連結
不曉得有沒有方法或程式碼可以寫出:
【假設我有兩張工作表
【一個是excel.all(裡面僅有一個sheet.1)
【另一個是excel.page(裡面有兩個sheet,分別名稱項目一、項目二)
【現在我要做一個動作,就是在excel.all的sheet.1裡面某一儲存格,
【抓取excel.page兩個sheet的名稱,也就是項目一、項目二,
請問有方法可以達成嗎?!
因為分類需要所以沒辦法把excel.all和excel.page裡面的sheet合併在同一個excel裡,所以想做一個類似索引,能在excel.all看到excel.page的sheet名稱~
麻煩高手囉~~以20點聊表感謝之意^^~
7 個解答
- 微軟卓越魔人Lv 61 0 年前最佳解答
在選單[工具][巨集][Visual Basic編輯器], 在左方專案瀏覽視窗VBA Project(Book1)按右鍵, [插入][模組], 在Module1中新增以下程式碼:Function ListSheet(DirName As String, FileName As String) As String Dim strTmp As String If fileexist(DirName & FileName) Then For Each Item In Workbooks(FileName).Sheets strTmp = strTmp & Item.Name & " " Next ListSheet = strTmp Else ListSheet = "ERR!" End IfEnd Function' return True if the file (with full directory) is exist.Function fileexist(FileName As Variant) As BooleanDim tmpnum As Integer If Len(FileName) > 0 Then tmpnum = Len(Dir(FileName)) If tmpnum > 0 Then fileexist = True Else fileexist = False End If End If End Function然後你就可以在工作表中任一欄位輸入以下公式:=ListSheet("c:\", "test1.xls")該儲存格就會自動顯示出 c:\test1.xls 檔案內所有的sheet名稱. 注意, 第一個參數是檔案所在的路徑, 必須以 "\" 符號結束.
2006-11-20 19:46:59 補充:
網路芳鄰的路徑也可以,例如 "\\mypc\share\"。再不然,你先把網路芳鄰對應到虛擬磁碟機也可以。
2006-11-21 17:33:46 補充:
你先在網路芳鄰上搜尋Pc01這台電腦, 確定有開分享資料夾[項目一], 而且項目一下面有子目錄[分類一]. 看起來你多打了一個冒號.
2006-11-22 22:19:26 補充:
你先把網路芳鄰對映成虛擬磁碟機看看,不然先把檔案放在同一台電腦,逐步縮小問題。我自己執行都正常。
2006-11-23 16:30:09 補充:
阿.我知道問題在哪了.檔案必須在開啟的狀態下, sheet名稱才會被擷取.我看看有沒有辦法修正.
2006-11-23 17:13:29 補充:
原本寫成函數的做法有些限制, 請改為以下程式碼:
Sub ListSheet()
Dim strTmp As String
Dim fDir As String
Dim fName As String
For i = 1 To 65535
strTmp = ""
fDir = Cells(i, 1)
fName = Cells(i, 2)
2006-11-23 17:13:47 補充:
If fileexist(fDir & fName) Then
Workbooks.Open FileName:=fDir & fName, updatelinks:=False, ignorereadonlyrecommended:=True, ReadOnly:=True
For Each Item In Workbooks(fName).Sheets
strTmp = strTmp & Item.Name & " "
Next
2006-11-23 17:13:57 補充:
Workbooks(fName).Close saveChanges:=False
Cells(i, 3) = strTmp
End If
Next
End Sub
在A欄位定義檔案路徑, B欄位定義檔案名稱, 執行巨集後, sheet名稱會顯示在C欄位.
2006-11-23 17:14:24 補充:
請將以上三段程式合併在一起.
2006-11-24 10:58:50 補充:
不行..這是自尊的問題..你要不要把檔案寄給我看看?
2006-11-24 10:59:54 補充:
另外,我說的虛擬磁碟機,是把網路芳鄰分享資料夾對應成你電腦的X, Y, Z等磁碟機代號的意思. 不過這個不是問題, 我試過 \\Pc01\的寫法是可以的.
2006-11-24 11:06:24 補充:
不然你先把 If fileexist(fDir & fName) Then , 以及相對應的 End If 之前加上單引號, 暫時註解起來.
2006-11-28 17:42:18 補充:
1.不是, 網路磁碟機要在檔案總管的[工具][連線網路磁碟機]去設定.
2.就是編輯程式碼, 在 If fileexist(fDir & fName) Then 以及 End If 前加上一個單引號.
3.點我的名字, 右上角有個"寄信給他/她], 你就可以寫信告訴我你的信箱.
4.失去鏈結點沒關係, 我只是要確定在你的檔案中所有程序都是正確的. 我的程式碼已經測試過可以執行.
2006-11-28 17:43:34 補充:
因為你的狀態為不接受網友來信, 所以需要你先把信箱告訴我, 我才能告訴你我的信箱讓你寄檔案給我.
2006-11-29 11:35:41 補充:
好低..不過我要晚上才能收webmail喔.:)
2006-12-01 10:50:06 補充:
你有沒有把某檔案.xls開啟著?
2006-12-03 11:46:36 補充:
這是Excel的限制囉..不然就要用我補充意見中的另一個寫法,執行巨集後一次撈出所有檔案的工作表名稱,而不是用函數的形式。
2006-12-03 22:06:12 補充:
你把你寫的程式碼寄來我看看吧。(上次你寄的檔案裡沒有程式碼)
- 6 年前
我本來從沒遇到過修NAS修硬碟和隨身碟要資料救援,一開始也跟大家一樣總是問價格到處比價,因為不懂,凡事都從價格,考量,輕言聽信朋友介紹比較便宜一家,找錯家之後痛苦尾隨而來,以下省略500字........,後來自己上網找資料救援找到硬碟醫院,和他們經理溝通之後給我正確觀念,這是妳寶貴的資料,妳要考慮是救不救的回問題,而不是貴不貴問題,如果重要請找對人搶救NAS資料硬碟救援才能恢復你的NAS中多顆的硬碟資料
- 匿名使用者7 年前
您期待已久的 8891遊樂館 熱烈開幕囉!
8891下注網以優質的服務領先業界
多位美女客服24小時即時線上為您服務!
8891遊樂網有優於市面所有運動彩卷遊戲的 賠 ~ 率
以及免下載辣妹 百家樂、21點、骰寶、各國賓果、餐廳賓果、彩球遊戲
另有數百位真人視訊聊天辣妹與您進行互動聊天還有"精彩"電影喔!
心動了嗎!! 快來體驗市面上最完質最高品質的服務
現在有開放免費試玩喔! 官網 : 8891.NET
- 匿名使用者7 年前
【亞洲36588合法彩券公司直營 官網: A36588.NET 】
【 最新活動→迎接新會員,首存狂送20% 】
【運動→電子→對戰→現場→彩球 】
【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】
【亞洲36588合法彩券公司直營 官網: A36588.NET 】
- 您覺得這個回答如何?您可以登入為回答投票。
- 1 0 年前
to微軟卓越魔人 :
想請問 "EXCEL在新工作表某格,抓取另一舊工作表所有sheet名稱" ~如何將每一個sheet名稱抓取放在不同儲存格而不是全部放在同一儲存格 ~like A1 show 另一工作表sheet1, A2 show 另一工作表sheet2, A3 show 另一工作表sheet3........
- 1 0 年前
請問微軟卓越魔人 :
=ListSheet("c:\", "test1.xls")
這個路徑,
如果路徑很複雜,
是在網路芳鄰抓的也適用嗎?!
因為是公司的區域網路~
而~我的路徑假使經過很多資料夾~
那途中的每一個資料夾都比照("c:\", 更改C為資料夾名稱即可嗎?!
因為試了還是不行耶~
麻煩你囉^^"
2006-11-21 08:53:29 補充:
to微軟卓越魔人 :
不好意思~
我試了還是不成功耶~
假使我的路徑是Pc01→接資料夾項目一再接資料夾→分類一的話,
那麼我輸入:
=ListSheet("\\Pc01\項目一:\分類一\", "test1.xls")
請問這樣路徑指定是正確的嗎?!@@
歹勢喔~~
2006-11-22 09:22:37 補充:
微軟卓越魔人 :
恩有~我檢查也修改了~
@@奇怪~我還是不成功耶~
出現ERR!錯誤訊息~
=0=好奧妙...
2006-11-24 09:07:29 補充:
To微軟卓越魔人:^^"出現偵錯訊息~以下這一段tmpnum = Len(Dir(FileName))
^^"謝謝你辛苦的幫我努力找方法~但是我就是不成功呢~我也沒有虛擬磁碟機~~沒關係~~~謝謝你了喔~~
我想我還是會把票投給你的^_^
2006-11-28 17:32:18 補充:
TO微軟卓越魔人:
^^"謝謝你喔~
●請問你說將網路分享該資料夾對應成我電腦的XYZ磁碟,意思是,將其捷徑貼到我電腦某一槽,比如C槽,然後路徑就寫C:\開頭,再接網路芳鄰裡面那一個資料夾的位置寫下去嗎?
●然後~~請問~您說:把 If fileexist(fDir & fName) Then , 以及相對應的 End If 之前加上單引號, 暫時註解起來.,這個意思不懂耶~
目前我把網路芳鄰那個資料夾的路徑貼到C槽,然後抓C:\.....,結果出現也是ERR訊息,那如果我直接開頭寫Pc01(該網路芳鄰資料夾名稱),就變成VALUE的訊息@@
2006-11-28 17:32:38 補充:
●另外~我不知道要如何寄檔案給你耶!@@因為這個檔案要對應我電腦裡面的資料夾,如果寄給你是不是可能會失去連結點哩~~
2006-11-29 09:47:09 補充:
TO微軟卓越魔人:
我寄信箱地址給你囉~^^"
2006-11-30 09:23:13 補充:
to微軟卓越魔人:
因為原始檔案有一些私人資料,故不方便整個檔案傳送過去,所以我另做了一個類似的檔案,那我傳一個"練習用總表"給你唷~裡面有連結的東西~但是連結的檔案卻放在我的網路芳鄰裡面某一個資料夾~這要可以嗎?@@
PS因為我把位置改了,所以錯誤訊息變成#NAME~但是之前原始檔案出現的是ERR或VALUE~~~
麻煩您囉^^~或是您測試的那個檔案給我參考也可以^^"
2006-12-01 09:44:31 補充:
to微軟卓越魔人:
有收到您的回信了~我有重新修改了~=Listsheet("\\Pc01\某資料夾\...","某檔案.xls")
可是還是出現VALUE的錯誤訊息耶~~
2006-12-02 17:20:57 補充:
to微軟卓越魔人:
這樣阿,一定要某檔案開啟著才能運作嗎?因為檔案在公司中,目前沒辦法去try~不好意思^^"
但是因為需要抓取的某檔案有好幾十個,如果要要開啟的話就傷腦筋了@@
2006-12-03 15:09:42 補充:
to微軟卓越魔人:
^^"嗯~我是用您補充意見的那個程式碼喔!沒關係~我再嘗試try幾遍~還是很謝謝您喔^^~時間快到了~您的專業和熱心我能了解喔^^~先給您評分吧^++^