使用VBscript从Excel导入Outlook日历条目? [英] Import Outlook calendar entries from Excel with VBscript?

查看:119
本文介绍了使用VBscript从Excel导入Outlook日历条目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我对VBscripts很新。我正在尝试使用VBscript将日历条目从Excel电子表格复制到Outlook日历中。我在论坛上找到了以下脚本:



  Dim objExcel,objWorkbook

    Dim objOutlook,objNameSpace,objFolder,foundItems,objAppt

    Dim i,j,strFilter

    

    Const olFolderCalendar = 9

    

   设置objExcel = CreateObject(" Excel.Application")

    objExcel.Application.DisplayAlerts = False

   设置objWorkbook = objExcel.Workbooks.Open(" C:\ VBATest \Dates.xlsx"))
    objExcel.Application.Visible = False

    'objExcel.ActiveWorkbook.Save'

   设置objOutlook = CreateObject(" Outlook.Application")

   设置objNameSpace = objOutlook.GetNameSpace(" MAPI")

   设置objFolder = objNameSpace.GetDefaultFolder(olFolderCalendar)

    

   对于i = 1到3

        j = 1

       而j> 0

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; strFilter =" [Start]> ='objWorkbook.Worksheets(i).Cells(4,2)'AND [Start]< ='objWorkbook.Worksheets(i).Cells(4,3)'AND [Subject ='objWorkbook.Worksheets(i).Cells(6,j)'"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;设置foundItems = objFolder.Items.Restrict(strFilter)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;设置foundItems = objFolder.Items.Restrict(strFilter)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果foundItems.Count = 1则findItems.Item.Delete

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;设置objAppt = objFolder.Items.Add

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;使用objAppt

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; .Subject =" objWorkbook.Worsheets(i).Cells(6,j)"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; .Body =" objWorkbook.Worsheets(i).Cells(6,j)"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; .Start =" objWorkbook.Worsheets(i).Cells(7,j)"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; .AllDayEvent = True

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; .ReminderMinutesBeforeStart = 1440

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; 。保存¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束与$
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;设置j = j + 1

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果objWorkbook.Worksheets(i).Cells(6,j)=" stop"然后设置j = 0

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果objWorkbook.Worksheets(i).Cells(6,j)=" stop"然后j = 0

  &NBSP; &NBSP; &NBSP; Wend b
  &NBSP;下一个

  &NBSP; objWorkbook.Close False

  &NBSP;设置objExcel = Nothing

  &NBSP;设置objWorkbook = Nothing

  &NBSP;设置objOutlook = Nothing

  &NBSP;设置objNameSpace = Nothing

  &NBSP;设置objFolder = Nothing

  &NBSP;设置objAppt = Nothing 



但运行时出现以下错误:



错误第20行:无法解析条件。错误在"[Subject ='objWorkbook.Worksheets(i).Ce ..."。

代码80020009.

$
想法如何解决这个问题?

Hi,

I am pretty new to VBscripts. I am trying to use a VBscript to copy calendar entries from an excel spreadsheet into an Outlook Calendar. I have found on forums this script below:

 Dim objExcel, objWorkbook
    Dim objOutlook, objNameSpace, objFolder, foundItems, objAppt
    Dim i, j, strFilter
    
    Const olFolderCalendar = 9
    
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Application.DisplayAlerts = False
    Set objWorkbook = objExcel.Workbooks.Open("C:\VBATest\Dates.xlsx")
    objExcel.Application.Visible = False
    'objExcel.ActiveWorkbook.Save'
    Set objOutlook = CreateObject("Outlook.Application")
    Set objNameSpace = objOutlook.GetNameSpace("MAPI")
    Set objFolder = objNameSpace.GetDefaultFolder(olFolderCalendar)
    
    For i = 1 To 3
        j = 1
        While j > 0
            strFilter = "[Start] >= 'objWorkbook.Worksheets(i).Cells(4,2)' AND [Start] <= 'objWorkbook.Worksheets(i).Cells(4,3)' AND [Subject = 'objWorkbook.Worksheets(i).Cells(6,j)'"
            Set foundItems = objFolder.Items.Restrict(strFilter)
            Set foundItems = objFolder.Items.Restrict(strFilter)
            If foundItems.Count = 1 Then foundItems.Item.Delete
            Set objAppt = objFolder.Items.Add
            With objAppt
                .Subject = "objWorkbook.Worsheets(i).Cells(6,j)"
                .Body = "objWorkbook.Worsheets(i).Cells(6,j)"
                .Start = "objWorkbook.Worsheets(i).Cells(7,j)"
                .AllDayEvent = True
                .ReminderMinutesBeforeStart = 1440
                .Save
            End With
            Set j = j + 1
            If objWorkbook.Worksheets(i).Cells(6, j) = "stop" Then Set j = 0
            If objWorkbook.Worksheets(i).Cells(6, j) = "stop" Then j = 0
        Wend
    Next
    objWorkbook.Close False
    Set objExcel = Nothing
    Set objWorkbook = Nothing
    Set objOutlook = Nothing
    Set objNameSpace = Nothing
    Set objFolder = Nothing
    Set objAppt = Nothing 

but I get the below error when I run it:

Error on line 20: Cannot parse condition. Error at "[Subject = 'objWorkbook.Worksheets(i).Ce...".
Code 80020009.

Any ideas how I can resolve this?

推荐答案

这是因为'objWorkbook.Worksheets(i).Cells(4,2)'等字符串实际上是部分条件,您需要改为使用它们的值:

This is because strings like 'objWorkbook.Worksheets(i).Cells(4,2)' etc are actually part of the condition, you need to use their values instead:

strFilter =" [Start]> ='" &安培; objWorkbook.Worksheets(i).Cells(4,2)& "'和[开始]< ='" &安培; objWorkbook.Worksheets(i).Cells(4,3)& "'AND [Subject ='" &安培; objWorkbook.Worksheets(i).Cells(6,j)& "'"

strFilter = "[Start] >= '" & objWorkbook.Worksheets(i).Cells(4,2) & "' AND [Start] <= '" & objWorkbook.Worksheets(i).Cells(4,3) & "' AND [Subject = '" & objWorkbook.Worksheets(i).Cells(6,j) & "'"


这篇关于使用VBscript从Excel导入Outlook日历条目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆