Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用宏(vba代码)本身获得指向宏的路径?_Vba_Outlook - Fatal编程技术网

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

如何使用宏(vba代码)本身获得指向宏的路径?,vba,outlook,Vba,Outlook,注意:我对查找工作表的路径不感兴趣,我打算将工作表的路径写入与.OTM文件位于同一文件夹中的文本文件中。 我需要将此代码从硬编码路径转换为从与宏位于同一文件夹中的文本文件读取的路径 如何使用宏(vba代码)本身获得指向宏的路径 Public xlApp作为对象 作为对象的公共xlWB 作为对象的公共页 Sub OpenXl() Dim enviro As字符串 将strPath设置为字符串 enviro=CStr(环境(“用户档案”)) '工作簿的路径 strPath=enviro&“\Docu

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

如何使用宏(vba代码)本身获得指向宏的路径

Public xlApp作为对象
作为对象的公共xlWB
作为对象的公共页
Sub OpenXl()
Dim enviro As字符串
将strPath设置为字符串
enviro=CStr(环境(“用户档案”))
'工作簿的路径
strPath=enviro&“\Documents\test2.xlsx”
出错时继续下一步
Set xlApp=GetObject(,“Excel.Application”)
如果错误为0,则
Application.StatusBar=“正在打开Excel源,请稍候…”
设置xlApp=CreateObject(“Excel.Application”)
bXStarted=True
如果结束
错误转到0
'打开工作簿以输入数据
设置xlWB=xlApp.Workbooks.Open(strPath)
设置xlSheet=xlWB.Sheets(“Sheet1”)
'处理消息记录
出错时继续下一步
端接头
只需使用:

    ThisWorkbook.Path

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

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


1.查找告诉您excel文件为的属性。谷歌的第一反应:2。更改
strPath
以引用可能的副本,而不是我对查找工作簿路径不感兴趣,我对查找宏路径感兴趣,因此我知道从何处读取文本文件。我使用outlook vba,因此,当我尝试
debug.print thisworkbook.path
时,它会给我一个对象所需的错误。但是,当我使用
debug.print xlWB.path
时,它确实会返回指向工作簿的适当路径,但这对我没有帮助。参考,Outlook代码似乎存储在用户
%appdata%\Microsoft\Outlook
文件夹中。您试图获取的路径是什么?假设我将.OTM移动到另一个文件夹,是否无法使用vba脚本来确定其位置?是的,但是否无法使用ol vba脚本来查找路径?假设我把它放在我桌面上的一个文件夹里,然后我把这个文件夹移到我的文档或其他东西里。我正在调查这个问题。据我所知,它几乎必须在该版本的文件夹中,否则它将无法工作。来自Sue Moshers的旧页:所有Outlook宏都存储在用户的%appdata%\Microsoft\Outlook文件夹中名为VbaProject.otm的单个文件中,因此,如果宏未存储在所述文件夹中,则宏根本无法工作?它看起来不像。我确实发现一些帖子说你可以在打开Outlook时使用开关,但它在2010年被弃用(/altvba)。
    ThisWorkbook.Path
strPath = Environ("userprofile") & "\AppData\Roaming\Microsoft\Outlook\"