我正在使用Outlook VBA应用程序,我需要访问我的收件箱,但我似乎遇到了一些麻烦.我正在使用该GetDefaultFoldder(olFolderInbox)方法,但是,我设置了多个电子邮件地址,但没有一个显示在我的个人文件夹的收件箱中.
所以我的问题是,这个默认文件夹在哪里定义?我如何知道哪个收件箱是默认收件箱?我知道还有这种GetFolderFromID方法,如果我使用它,
如何找到文件夹ID才能指向它?
这是我正在使用的代码.这是Timothy Chen Allen的博客上的Timothy的博客.代码:
Sub find_unread()
On Error GoTo eh:
Dim ns As Outlook.NameSpace
Dim folder As MAPIFolder
Dim item As Object
Dim msg As MailItem
Set ns = Session.Application.GetNamespace("MAPI")
Set folder = ns.GetDefaultFolder(olFolderInbox)
For Each item In folder.Items
DoEvents
If (item.Class = olMail) And (item.UnRead) Then
Set msg = item
Debug.Print msg.SenderEmailAddress
msg.Display True
End If
Next
MsgBox "All messages in Inbox are read", vbInformation, "All Read"
Exit Sub
eh: …Run Code Online (Sandbox Code Playgroud) 我在Outlook 2010中配置了两个Exchange帐户,但是我无法找到如何到达第二个帐户的收件箱.Session.GetDefaultFolder()总是返回第一个.
甚至枚举Session.Accounts,找到正确的帐户并调用Session.Account(found one).Store.GetDefaultFolder()返回错误的收件箱(来自默认的交换帐户,而不是辅助帐户).
我UserForm在Excel中创建了我的第一个无模式,并在其上放置了一个ActiveX标签.如何设置标签的标题以显示标签中的内容Sheet1.Range("A1"),并在单元格A1中的值更改时自行更新?
基本上,我希望Userform's标签始终更新Excel单元格中的第二个更改.谢谢!
我正在尝试在用户按下发送按钮时更改Outlook中"发送至"字段中的电子邮件地址.例如,如果当前Item.To值= 'aaa@example.com'它变为'bbb@example.com'.
我可以改变主题,但是没有使用Item.To(是安全问题吗?):
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If Item.Class <> olMail Then Exit Sub
Item.To = "bbb@example.com" ' Nope , It does not work
Item.Subject = "New Subject" ' It works
End Sub
Run Code Online (Sandbox Code Playgroud)
谢谢
我有以下代码来计算outlook文件夹中的电子邮件数量.
Sub HowManyEmails()
Dim objOutlook As Object,
objnSpace As Object,
objFolder As Object
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
MsgBox "Number of emails in the folder: " & EmailCount, , "email count" End Sub
Run Code Online (Sandbox Code Playgroud)
我试图按日期计算此文件夹中的电子邮件,所以我最终得到每天的计数.
我有3个细胞配方.
A1:
=IF(B6>=3.3,"1","0")
Run Code Online (Sandbox Code Playgroud)
B1:
=IF(C6<7,"0", IF(C6<9,"1",IF(C6>=9,"2")))
Run Code Online (Sandbox Code Playgroud)
C1:
=IF(D6>85,"1","0")
Run Code Online (Sandbox Code Playgroud)
我的Cell D1想要总结上面的3个细胞.
=SUM(A1:C1)
Run Code Online (Sandbox Code Playgroud)
但这总是返回0.
但是当我这样做的时候
=A1 + B1 + C1
Run Code Online (Sandbox Code Playgroud)
它将我的结果归还给我
为什么会这样?
我有以下代码打开文件选择器,让用户选择一个文件.
Sub SelectFiles(ByRef test As String)
Dim iFileSelect As FileDialog
Set iFileSelect = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
If iFileSelect.Show = -1 Then
For Each vrtSelectedItem In iFileSelect.SelectedItems
test = vrtSelectedItem
Next vrtSelectedItem
End If
Set iFileSelect = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
我希望它只显示某种类型的文件(在本例中为XML),用户可以选择任何文件类型.
我经历过一些有创意的谷歌搜索,但似乎无法找到解决方案,我觉得它应该很简单.
我刚刚编写了一个spiffy宏来自动生成报告.它运行良好,但我需要它根据两个单元格中的数据自动命名电子表格.
本质上,此宏创建一个新的电子表格,将信息复制到它,并创建每月所需的相关数据透视表.
作为其中的一部分,我创建了一个仪表板,用于生成包含说明和报告所涉及的日期范围的报告.它目前创建电子表格" NEW REPORT ".有没有办法创建新的电子表格并自动命名为"Report 01.01.15 to 01.02.15"?
我将日期范围作为两个单独的单元格,我知道我必须确保日期范围是使用允许的字符(IE 01.01.15而不是01/01/15) - 我是是说有一种方法告诉用户他们用错误的分隔符输入日期?
我有一个 excel 文件目录,这些文件通过主文件中的 VBA 代码相互交互。
我以前从来没有遇到过这个问题,但是在复制整个目录以对副本进行一些开发工作(在不同的位置保持原件完好无损)之后,我在引用时遇到了“下标超出范围”的问题工作簿。
例如,之前使用这行代码一切正常(实际代码中没有任何更改):
现在抛出错误的代码(从未使用过):
ScheduleLocation = Workbooks("Master Schedule").Path
Run Code Online (Sandbox Code Playgroud)
但是,此行现在会引发错误。如果我用“Master Schedule.xlsm”替换“Master Schedule”,一切都会恢复正常。我以前遇到过这个问题,但我一直无法找出问题的根本原因。
不会抛出错误的代码:
ScheduleLocation = Workbooks("Master Schedule.xlsm").Path
Run Code Online (Sandbox Code Playgroud)
因此我的问题是:这是为什么?为什么名称(不带扩展名)有时不够用,有时又不合适?
我正在将数据从Access数据库导出到Excel报表中,该报表中需要包含的部分是与数据相对应的图片。图片存储在共享文件中,并插入到Excel文件中,如下所示:
Dim P As Object
Dim xlApp As Excel.Application
Dim WB As Workbook
Set xlApp = New Excel.Application
With xlApp
.Visible = False
.DisplayAlerts = False
End With
Set WB = xlApp.Workbooks.Open(FilePath, , True)
Set P = xlApp.Sheets(1).Pictures.Insert(PicPath) 'Insert picture
With P
With .ShapeRange
.LockAspectRatio = msoFalse
.Width = 375
.Height = 260
End With
.Left = xlApp.Sheets(1).cells(y, x).Left
.Top = xlApp.Sheets(1).cells(y, x).Top
.Placement = 1
.PrintObject = True
End With
WB.SaveAs FileName:= NewName, CreateBackup:=False
WB.Close SaveChanges:=True
xlApp.DisplayAlerts = True …Run Code Online (Sandbox Code Playgroud)