单词vba将sPath设置为当前目录

时间:2016-06-13 12:14:25

标签: vba ms-word

将.emf文件粘贴到word中的简单代码:

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文件(打开)所在的活动目录,而不是指定的目录。很多搜索都没有发现 - 这令人惊讶,令人尴尬,可能意味着我没有使用正确的关键词。

帮助?

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分: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环境中工作的人来说,任何人都有一个聪明的解决方案吗?