2016-06-13 145 views
0

簡單的代碼迴路粘貼.emf文件到一句話:字VBA設置SPATH作爲當前目錄

Sub LoopEMF() 
Dim sPic As String 
Dim sPath As String 

sPath = "C:\Users\me\Desktop\Test2\" 
sPic = Dir(sPath & "*.emf") 

Do While sPic <> "" 
    Selection.TypeParagraph 
    Selection.InlineShapes.AddPicture _ 
     FileName:=sPath & sPic, _ 
     LinkToFile:=False, SaveWithDocument:=True 
    sPic = Dir 
    Selection.TypeParagraph 
Loop 
End Sub 

超過指定的目錄相反,我只是想在活動目錄中查找在Word文件(這是開放的)位於。許多搜索沒有發現任何線索 - 這令人驚訝,令人尷尬,可能意味着我沒有使用正確的關鍵詞。

幫助?

回答

0

當我打開一個Excel文檔d:\ DB \ tmp目錄\ test1.xlsm:

CurDir() returns C:\Users\[username]\Documents 

ActiveWorkbook.Path returns D:\db\tmp 

所以CURDIR()有一個系統默認的和可以改變的。

對於相同的已保存工作簿,ActiveWorkbook.Path不會更改。

例如,CurDir()會在您執行「文件/另存爲」命令時發生更改,並在文件/目錄選擇對話框中選擇一個隨機目錄。然後點擊取消跳過保存。但CurDir()已經更改爲最後選擇的目錄。

來源:
How to get current working directory using vba?

0

更爲尷尬 - 我一直在使用正確的代碼:

Sub NewLoopEMF() 
Dim sPic As String 
Dim sPath As String 

sPath = ActiveDocument.path & "\" 
sPic = Dir(sPath & "*.emf") 

Do While sPic <> "" 
    Selection.TypeParagraph 
    Selection.InlineShapes.AddPicture _ 
     FileName:=sPath & sPic, _ 
     LinkToFile:=False, SaveWithDocument:=True 
    sPic = Dir 
    Selection.TypeParagraph 
Loop 
End Sub 

不幸的是,活動目錄是一個同步的SharePoint文件夾,所以返回的名稱是超文本(http://all其餘/),並與此,所有你知道什麼突破。我想通過使用這個代碼:

Sub GetActiveDocumentPath() 

MsgBox ActiveDocument.path 

End Sub 

所以看來簡單的解決方案是不使用sharepoint文件夾來存儲項目。任何人都可以爲我們在SharePoint環境中工作的人提供一個聰明的解決方案?

+0

堆棧溢出不是討論「論壇」 - 這是一個問答網站。所以你不應該在「回答」中發佈後續問題(並且在這種情況下你不太可能得到迴應)。一種選擇是使用[編輯]鏈接修改原始問題的標題和內容。另一個是開始一個新的問題,這個問題可以關閉爲「脫離主題/不可重複」(或者你可以刪除它)。 –

相關問題