2014-11-06 55 views
1

據我所知,Google搜索中我不認爲這已經被問到過,而且它非常具體。在vba腳本中查找Excel電子表格的模板

我有一個嵌入了vba代碼的excel電子表格模板('xltm'文件),我想在模板打開的電子表格中找到模板的路徑。如果沒有任何意義,我會舉一個例子:

用戶通過雙擊模板文件打開一個新的電子表格。作爲示例,模板文件位於'C:\ My Stuff'中。 他們填寫單元格,然後點擊一個按鈕,在詢問他們想要調用它的內容後,創建一個文本文件。 然後代碼使用'Application.ActiveWorkbook.path'將文件保存在電子表格打開的相同位置(C:\ My Stuff)。 導致許可錯誤,因爲電子表格尚未保存,因此沒有路徑。 所以我的問題是:有沒有辦法找到原始模板的文件路徑?在這個例子中,這將是C:\我的東西。

我可以讓用戶在創建文本文件之前保存文件,或者我可以使用xlsm文件。但是一個模板可以最大限度地減少文件格式化的可能性,並且我不想讓他們每次保存文件,他們可能會複製並粘貼大部分數據,然後只需要文本文件,而不是每次都使用不同的電子表格。

希望這是有道理的,並感謝任何提前的答案。

回答

3

所以我的問題是:有沒有辦法找到原始模板的文件路徑?在這個例子中,這將是C:\我的東西。

你不能。

我相信這不是你正在尋找的答案,但不幸的是這是答案。

如果你雙擊了在瀏覽器中的模板創建一個文件,然後AFAIK你不能找到路徑或模板名稱,比如你可以在MS Word使用oDoc.AttachedTemplate

替代

在模板來做,把這個代碼在ThisWorkbook

Private Sub Workbook_Open() 
    ChDir "C:\Blah Blah" '<~~ Change this to the templates path 
End Sub 

然後從新工作簿通過雙擊創建點擊模板,你可以使用CurDir來獲得該路徑。上述方法的

缺點

  1. 如果用戶更改模板的位置,然後你就不會得到正確的路徑Workbook_Open()代碼被結轉到新的文件
+0

謝謝,你說得對,那不是我正在尋找的答案,但至少我知道現在不能做。我會嘗試你的建議解決方案。 – 2014-11-06 11:28:42

+0

@JamesR或者替代將文件路徑硬編碼成具有副作用的宏,您可以在模板文件中將路徑硬編碼爲隱藏工作表中單元格中的簡單字符串,然後部署它們。 – xmojmr 2014-11-06 15:23:29

相關問題