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 调整VB脚本以编程方式创建由电子邮件触发的文件夹_Vba_Outlook_Special Folders - Fatal编程技术网

Vba 调整VB脚本以编程方式创建由电子邮件触发的文件夹

Vba 调整VB脚本以编程方式创建由电子邮件触发的文件夹,vba,outlook,special-folders,Vba,Outlook,Special Folders,这是我第一次问你们问题。我是一名SQL开发人员,对VB非常熟悉 我为我的部门Quickbase管理一个在线数据库,并通过该网站管理报告申请。我为每个人创建了一个票证,该票证创建了一封电子邮件,通知负责该任务的开发人员。我们为收到的每个请求都设置了文件夹,手动创建这些文件夹是非常费力和令人沮丧的 所以我问了一下,环顾四周,看到了一个脚本,它能够做我需要的事情,或者说是别人告诉我的。然而,我不知道如何根据自己的需要定制它,也不知道如何正确地实现它。这就是我需要你帮助的地方,公平的编程神,所以,请帮我

这是我第一次问你们问题。我是一名SQL开发人员,对VB非常熟悉

我为我的部门Quickbase管理一个在线数据库,并通过该网站管理报告申请。我为每个人创建了一个票证,该票证创建了一封电子邮件,通知负责该任务的开发人员。我们为收到的每个请求都设置了文件夹,手动创建这些文件夹是非常费力和令人沮丧的

所以我问了一下,环顾四周,看到了一个脚本,它能够做我需要的事情,或者说是别人告诉我的。然而,我不知道如何根据自己的需要定制它,也不知道如何正确地实现它。这就是我需要你帮助的地方,公平的编程神,所以,请帮我杀死这条龙,王国的所有财富都将属于你*

Outlook VBA 

Sub MakeFile(MyMail As MailItem)
    myMailEntryID = MyMail.EntryID
    Set outlookNameSpace = Application.GetNamespace(“MAPI”)
    Set outlookMail = outlookNameSpace.GetItemFromID(myMailEntryID)
    MyArgument = OutlookMail.Subject
    Dim sMyCommand = “c:\makefile.bet ” & MyArgument
    Shell “cmd /c ” & sMyCommand, vbHide
End Sub
Makefile.bat
@echo off
cls
mkdir %1
webtsite URL为:www.quickbase.com 根文件夹路径:h:///ntsp/data/reports-criteria/quickbase docs/[要创建的文件夹]


*财富不是金钱,而是善良的感觉,而完整只有通过帮助一个书呆子才能获得,哦,它让电子喷丸变得强大

作为一个书呆子,我会让你从正确的方向开始。我认为我们可以通过VBA单独实现您想要的,而不需要使用shell

首先,我们需要钩住一个事件,即这一切何时会发生。我想那是当你的收件箱收到一封电子邮件的时候。如果我在这里,这就是开始

请理解两件重要的事情

  • 这只适用于进入收件箱的邮件。因此,如果您已经有了将项目移动到另一个文件夹的规则,那么它将不起作用

  • 您需要“测试”收到的电子邮件-我的示例显示了对该主题的测试。只有当且仅当受试者有“我的测试”时,它才会称你为特殊程序

  • 要在Visual Basic编辑器中输入代码,请执行以下操作:

    在“工具”菜单上,指向“宏”,然后单击“Visual Basic编辑器”。 在项目窗格中,单击展开文件夹,然后双击ThisOutlookSession图标。 在“代码”窗口中键入或粘贴以下代码

    Dim WithEvents objInboxItems As Outlook.Items
    
    
    ' Run this code to start your rule.
    Sub StartRule()
       Dim objNameSpace As Outlook.NameSpace
       Dim objInboxFolder As Outlook.MAPIFolder
    
       Set objNameSpace = Application.Session
       Set objInboxFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
       Set objInboxItems = objInboxFolder.Items
    
    End Sub
    
    ' Run this code to stop your rule.
    Sub StopRule()
       Set objInboxItems = Nothing
    End Sub
    
    ' This code is the actual rule.
    Private Sub objInboxItems_ItemAdd(ByVal Item As Object)
       If Item.Subject = "My Test" Then
          Call checkForFolder
       End If
    End Sub
    
    Private Sub checkForFolder()
    
    
    
    End Sub
    
  • 在“文件”菜单上,单击“保存VbaProject.OTM”
  • 现在可以运行StartRule和StopRule宏来打开和关闭规则
  • 退出Visual Basic编辑器
  • (您可能需要启动和停止Outlook以使变量“挂钩”

    一旦您了解并理解了这一点,就可以卸下开关


    然后,您必须决定创建新文件夹的测试,以便我们可以测试电子邮件并将其与现有文件夹进行比较,然后创建一个新文件夹等。

    非常感谢您的帮助。我将在明天下午进行尝试,希望我能按照说明进行:)脚本与您的主题不符。是否要在Outlook中创建文件夹,或在硬盘上创建目录?请删除问题中所有多余的杂音。请那里太吵了,我都不知道你到底在问什么。