【问题标题】:How do I obtain the path towards the macro using the macro (vba code) itself?如何使用宏(vba 代码)本身获取通向宏的路径?
【发布时间】:2020-06-23 15:34:55
【问题描述】:

注意:我对查找工作表的路径不感兴趣,我打算将工作表的路径写入与 .OTM 文件位于同一文件夹中的文本文件中。 我需要将此代码从硬编码路径转换为从与宏位于同一文件夹中的文本文件读取的路径。

如何使用宏(vba 代码)本身获取通向宏的路径?

Public xlApp As Object
Public xlWB As Object
Public xlSheet As Object
Sub OpenXl()
    Dim enviro As String
    Dim strPath As String
enviro = CStr(Environ("USERPROFILE"))
'the path of the workbook
 strPath = enviro & "\Documents\test2.xlsx"
     On Error Resume Next
     Set xlApp = GetObject(, "Excel.Application")
     If Err <> 0 Then
         Application.StatusBar = "Please wait while Excel source is opened ... "
         Set xlApp = CreateObject("Excel.Application")
         bXStarted = True
     End If
     On Error GoTo 0
     'Open the workbook to input the data
     Set xlWB = xlApp.Workbooks.Open(strPath)
     Set xlSheet = xlWB.Sheets("Sheet1")
    ' Process the message record
    On Error Resume Next
End Sub

【问题讨论】:

标签: vba outlook


【解决方案1】:

OTM 文件存储在我的电脑上(Windows 7/Outlook 2010):

strPath = Environ("userprofile") & "\AppData\Roaming\Microsoft\Outlook\"

【讨论】:

  • 是的,但是没有办法使用ol vba脚本找到路径吗?假设我将它放在桌面上的文件夹中,然后我将文件夹移动到我的文档或其他东西中。
  • 我正在调查。据我所知,该版本几乎必须位于该文件夹中,否则将无法正常工作。来自 Sue Moshers 旧页面:所有 Outlook 宏都存储在用户的 %appdata%\Microsoft\Outlook 文件夹中名为 VbaProject.otm 的单个文件中 outlookcode.com/article.aspx?id=28
  • 所以如果宏没有存储在所述文件夹中,它根本就不起作用?
  • 看起来不像。我确实发现一些帖子说您可以在打开 Outlook 时使用开关,但它在 2010 年已被弃用(/altvba)。 social.msdn.microsoft.com/Forums/office/en-US/…
【解决方案2】:

简单使用:

    ThisWorkbook.Path

这将返回包含代码的工作簿的路径。

【讨论】:

  • 我使用 Outlook vba,所以当我尝试 debug.print thisworkbook.path 时,它会给我一个 Object required 错误。
  • 但是,当我使用debug.print xlWB.Path 时,它确实会返回通向工作簿的适当路径,但这对我没有帮助。
  • 参考stackoverflow.com/questions/233702/…,看来Outlook代码存储在用户%appdata%\Microsoft\Outlook文件夹中。你想走哪条路?
  • 假设我将.OTM 移动到另一个文件夹,我没有办法使用vba 脚本来判断它的位置吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多