使用Shell运行程序 - 编译错误:需要对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Shell运行程序 - 编译错误:需要对象相关的知识,希望对你有一定的参考价值。
我试图抓取选定的Outlook邮件,将它们作为html保存到磁盘并运行另一个应用程序。
当电子邮件得到保存时,我正在努力运行其他应用程序。有一个“编译错误:需要对象”。
Public Sub maile()
Dim oMail As Outlook.MailItem
Dim objItem As Object
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim enviro As String
Dim objShell As String
enviro = CStr(Environ("USERPROFILE"))
For Each objItem In ActiveExplorer.Selection
If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem
sName = oMail.Subject
ReplaceCharsForFileName sName, "-"
dtDate = oMail.ReceivedTime
sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
vbUseSystem) & Format(dtDate, "-hhnnss", _
vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".html"
sPath = "c:maile"
Debug.Print sPath & sName
oMail.SaveAs sPath & sName, olHTML
End If
strProgramPath = "C:PedrodistPedroPedro.exe"
Set objShell = CreateObject("WScript.Shell")
objShell.Run strProgramPath
Next
End Sub
Private Sub ReplaceCharsForFileName(sName As String, sChr As String)
sName = Replace(sName, "'", sChr)
sName = Replace(sName, "*", sChr)
sName = Replace(sName, "/", sChr)
sName = Replace(sName, "", sChr)
sName = Replace(sName, ":", sChr)
sName = Replace(sName, "?", sChr)
sName = Replace(sName, Chr(34), sChr)
sName = Replace(sName, "<", sChr)
sName = Replace(sName, ">", sChr)
sName = Replace(sName, "|", sChr)
End Sub
如果你是新手,可以对编码进行一些介绍。类型理论(确保在任何一天都能了解更多信息,这是一个很棒的主题!):你的代码中的东西有一种描述它们的类型。比如,他们可以做什么样的事情以及他们可以拥有什么样的数据。类型通常分为值类型和引用类型。值是本机简单的东西,如数字或字符串,它们安全,简单,高效和美观。参考文献相当复杂,你可以搞定它们,但它们是如此强大和灵活,你基本上会喜欢它们,就像那些着名的物体一般。
为什么这在您的代码中很重要?您基本上将ValueType视为ReferenceType。 VBA要求您通过以下方式完成对ReferenceType的分配
Set ReferenceType = value
。
我的意思是,你被迫拼出一个Set
任务。同样,ValueTypes不能与Set
一起分配。
它发生在哪里?一开始,你说
Dim objShell As String
这意味着你告诉VBA objShell
是一个String
,也就是ValueType。但后来你写了
Set objShell = CreateObject("WScript.Shell")
在Set
之后,VBA期待一个ReferenceType。这就是为什么它抱怨对象需要编译错误:)
所以,只是在开头说
Dim objShell as Object
这是一个CreateObject()
函数给你的方式,对象:)
PD:偏离主题:你应该尝试改进缩进,它使阅读更加愉快,这是编程中的普遍口头禅。但那是一个不同的话题:)
以上是关于使用Shell运行程序 - 编译错误:需要对象的主要内容,如果未能解决你的问题,请参考以下文章