bloggerAds

2017年7月18日 星期二

取得Excel檔案所在資料夾路徑

因為最近在實作表格輸出時,
需要參考到外部的txt檔,
有了txt的檔案路徑讀取的需求,
因此試作了抓取當下Excel檔暗路徑,
以下為抓取路徑時會使用到的一些Function:


1. 抓取檔案路徑:=CELL("filename")
可獲得:檔案位置\[檔案名稱]\工作表名稱
//範例------
1. 在D:\新增檔名為Test.xlsm的Excel檔
2. 開啟 Test.xlsm
3. =CELL("filename")
//執行結果---
D:\[Test.xlsm]\Sheet1
//-----------

2. 字串長度: =LEN("字串")
//範例------
=LEN("HelloWorld")
//執行結果---
10
//-----------

3. 從第n個字開始到字串末的子字串: =RIGHT("字串",從第n個字開始)
//範例------
=RIGHT("HelloWorld",5)
//執行結果---
World
//-----------

4. 顯示字串中前n個字的子字串: =LEFT("字串",顯示字數)
//範例------
=LEFT("HelloWorld",5)
//執行結果---
Hello
//-----------

5. 找到子字串在字串中所在的位置: =FIND("子字串","字串")
//範例------
=FIND("o","HelloWorld")
//執行結果---
5
//-----------

綜合以上方法,
實作:
//範例------
1. 在D:\新增檔名為Test.xlsm的Excel檔
2. 開啟 Test.xlsm
3. =LEFT(CELL("fileName"),FIND("[",CELL("fileName"))-1)
//執行結果---
D:\
//-----------

簡單的說明一下,
先抓取檔案完整路徑(參考Function1),
其中包含了"[檔案名稱]\工作表名稱",
因為我們只想獲得路徑,
所以希望將後方的"[檔案名稱]\工作表名稱"移除,
因此使用了FIND,找到"["所在的字元位置(參考Function5),
將其值減一,獲得路徑字串的長度,
最後使用LEFT顯示前面的子字串(參考Function4),
獲得最後結果即為檔案路徑。

補充說明:
以上為Excel抓取路徑的方法,
由於個人需求是從VBA抓取表格中的路徑,
後來發現...
原來VBA中可以直接使用 ThisWorkbook.Path
就獲得路徑了...
不過由於獲得路徑後方沒有"\"
如果要開啟檔案記得得自己補上"\"
如:
檔案位置: D:\test\TestExcel.xlsm
於VBA中使用ThisWorkbook.Path抓取路徑
//執行結果:---
D:\test
//------------

沒有留言:

張貼留言