Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Outlook - создание встреч и собраний из Excel - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Outlook - создание встреч и собраний из Excel
Rioran Дата: Понедельник, 24.11.2014, 17:09 | Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Всем привет и хорошего настроения!

Хочу поделиться с сообществом своим решением задачи по автоматическому созданию событий OutLook из книги Excel. Речь идёт о Встречах и Собраниях.

Встреча: событие OutLook, которое отмечается в личном календаре. Устанавливается исключительно для одного пользователя, без вовлечения в процесс других.

Собрание: событие OutLook, которое отмечается в личном календаре с отправкой запроса адресатам. То есть, в отличие от Встречи - другие люди получают уведомление.

Технические нюансы кода:

1). Строго заполнять столбец А для корректной работы программы. Раскрывающиеся списки в помощь.
2). Выделение события цветом корректно работает только на русскоязычном офисе. В остальных случаях цвет категории будет обозначен текстом.
3). Если в столбце "Напоминание?" стоит "Да" - напоминание устанавливается, в остальных случаях - нет.
4). Если хотите просмотреть создаваемые события без сохранения - замените в конце кода .Send / .Save на .Display
5). [Важно!] Участников события вписывать строго через запятую с пробелом: Участник1, Участник2, Участник3
6). [Важно!] Участники Собрания должны быть записаны строго почтовыми адресами: voronov_rv@mail.ru например.
7). Участники Встречи могут быть записаны любыми именами. В тексте события они будут выведены в конце, никакие действия не предусмотрены.

Если данная программа оказалась для Вас полезна или у Вас есть мысли, идеи, мнение, предложения, вопросы - обязательно пишите, ибо интересно же =) На том и держится мой спортивный интерес.

[vba]
Код
Option Explicit
Option Base 0

Sub Rio_OutLook_Time_Manager()

'Author:    Roman "Rioran" Voronov
'Date:      the 24-th of November, 2014
'Feedback:  voronov_rv@mail.ru

'Программа для переноса из файла Excel в Outlook событий "Собрание" и "Встреча"

Dim olApp As Object  'Для обращений к приложению АутЛук
Dim NewX As Object   'Для создания объекта события
Dim Others As String 'Для работы со списком людей
Dim NewMan As Object 'Для добавления нового участника

Dim They             'Массив приглашенных
Dim R As Byte        'Обработка события
Dim X As Long        'Для перебора строк
Dim A As Long        'Для перебора участников
Dim H As Long        'Высота Таблицы

H = Cells(Rows.Count, 1).End(xlUp).Row
If H < 2 Then Exit Sub
Set olApp = CreateObject("Outlook.Application")

For X = 2 To H
        Select Case Cells(X, 1).Value
            Case "": R = 0
            Case "Собрание": R = 1
            Case "Встреча": R = 2
        End Select
        If R > 0 Then
            Set NewX = olApp.CreateItem(1)
            With NewX
                .MeetingStatus = R
                They = Split(Cells(X, 4).Value, ", ")
                Select Case R
                    Case 1
                        For A = 0 To UBound(They)
                            Others = "<" & They(A) & ">"
                            Set NewMan = NewX.Recipients.Add(Others)
                            NewMan.Type = 1
                        Next A
                        Others = ""
                    Case 2
                        Others = "Участники встречи:" & vbNewLine & vbNewLine
                        For A = 0 To UBound(They)
                            Others = Others & They(A) & vbNewLine
                        Next A
                End Select
                .Subject = Cells(X, 2).Value
                .Location = Cells(X, 3).Value
                .Body = Cells(X, 5).Value & vbNewLine & vbNewLine & Others 'Текст
                .Categories = Cells(X, 6).Value
                .Start = Cells(X, 7).Value + Cells(X, 8).Value
                .End = Cells(X, 9).Value + Cells(X, 10).Value
                If Cells(X, 11).Value = "Да" Then
                    .ReminderSet = True
                    .ReminderMinutesBeforeStart = Cells(X, 12).Value
                Else
                    .ReminderSet = False
                End If
                Select Case R
                    Case 1: .Send
                    Case 2: .Save
                End Select
            End With
        End If
Next X

Set They = Nothing
Set NewMan = Nothing
Set NewX = Nothing
Set olApp = Nothing

End Sub
[/vba]
К сообщению приложен файл: Rio_Assist.xlsb (20.8 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 24.11.2014, 17:56
 
Ответить
СообщениеВсем привет и хорошего настроения!

Хочу поделиться с сообществом своим решением задачи по автоматическому созданию событий OutLook из книги Excel. Речь идёт о Встречах и Собраниях.

Встреча: событие OutLook, которое отмечается в личном календаре. Устанавливается исключительно для одного пользователя, без вовлечения в процесс других.

Собрание: событие OutLook, которое отмечается в личном календаре с отправкой запроса адресатам. То есть, в отличие от Встречи - другие люди получают уведомление.

Технические нюансы кода:

1). Строго заполнять столбец А для корректной работы программы. Раскрывающиеся списки в помощь.
2). Выделение события цветом корректно работает только на русскоязычном офисе. В остальных случаях цвет категории будет обозначен текстом.
3). Если в столбце "Напоминание?" стоит "Да" - напоминание устанавливается, в остальных случаях - нет.
4). Если хотите просмотреть создаваемые события без сохранения - замените в конце кода .Send / .Save на .Display
5). [Важно!] Участников события вписывать строго через запятую с пробелом: Участник1, Участник2, Участник3
6). [Важно!] Участники Собрания должны быть записаны строго почтовыми адресами: voronov_rv@mail.ru например.
7). Участники Встречи могут быть записаны любыми именами. В тексте события они будут выведены в конце, никакие действия не предусмотрены.

Если данная программа оказалась для Вас полезна или у Вас есть мысли, идеи, мнение, предложения, вопросы - обязательно пишите, ибо интересно же =) На том и держится мой спортивный интерес.

[vba]
Код
Option Explicit
Option Base 0

Sub Rio_OutLook_Time_Manager()

'Author:    Roman "Rioran" Voronov
'Date:      the 24-th of November, 2014
'Feedback:  voronov_rv@mail.ru

'Программа для переноса из файла Excel в Outlook событий "Собрание" и "Встреча"

Dim olApp As Object  'Для обращений к приложению АутЛук
Dim NewX As Object   'Для создания объекта события
Dim Others As String 'Для работы со списком людей
Dim NewMan As Object 'Для добавления нового участника

Dim They             'Массив приглашенных
Dim R As Byte        'Обработка события
Dim X As Long        'Для перебора строк
Dim A As Long        'Для перебора участников
Dim H As Long        'Высота Таблицы

H = Cells(Rows.Count, 1).End(xlUp).Row
If H < 2 Then Exit Sub
Set olApp = CreateObject("Outlook.Application")

For X = 2 To H
        Select Case Cells(X, 1).Value
            Case "": R = 0
            Case "Собрание": R = 1
            Case "Встреча": R = 2
        End Select
        If R > 0 Then
            Set NewX = olApp.CreateItem(1)
            With NewX
                .MeetingStatus = R
                They = Split(Cells(X, 4).Value, ", ")
                Select Case R
                    Case 1
                        For A = 0 To UBound(They)
                            Others = "<" & They(A) & ">"
                            Set NewMan = NewX.Recipients.Add(Others)
                            NewMan.Type = 1
                        Next A
                        Others = ""
                    Case 2
                        Others = "Участники встречи:" & vbNewLine & vbNewLine
                        For A = 0 To UBound(They)
                            Others = Others & They(A) & vbNewLine
                        Next A
                End Select
                .Subject = Cells(X, 2).Value
                .Location = Cells(X, 3).Value
                .Body = Cells(X, 5).Value & vbNewLine & vbNewLine & Others 'Текст
                .Categories = Cells(X, 6).Value
                .Start = Cells(X, 7).Value + Cells(X, 8).Value
                .End = Cells(X, 9).Value + Cells(X, 10).Value
                If Cells(X, 11).Value = "Да" Then
                    .ReminderSet = True
                    .ReminderMinutesBeforeStart = Cells(X, 12).Value
                Else
                    .ReminderSet = False
                End If
                Select Case R
                    Case 1: .Send
                    Case 2: .Save
                End Select
            End With
        End If
Next X

Set They = Nothing
Set NewMan = Nothing
Set NewX = Nothing
Set olApp = Nothing

End Sub
[/vba]

Автор - Rioran
Дата добавления - 24.11.2014 в 17:09
Gustav Дата: Вторник, 25.11.2014, 09:16 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Rioran, а где же ссылка на исходную тему с постановкой задачи?
http://www.excelworld.ru/forum/4-14359-1
Считаю,что девушка-постановщик тоже достойна лавров :)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеRioran, а где же ссылка на исходную тему с постановкой задачи?
http://www.excelworld.ru/forum/4-14359-1
Считаю,что девушка-постановщик тоже достойна лавров :)

Автор - Gustav
Дата добавления - 25.11.2014 в 09:16
Rioran Дата: Вторник, 25.11.2014, 09:53 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Gustav, спасибо, упустил этот момент, этой ссылке здесь самое место =) Как раз там сейчас идёт обсуждение некоторых важных технических моментов.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеGustav, спасибо, упустил этот момент, этой ссылке здесь самое место =) Как раз там сейчас идёт обсуждение некоторых важных технических моментов.

Автор - Rioran
Дата добавления - 25.11.2014 в 09:53
Gustav Дата: Вторник, 25.11.2014, 11:09 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
этой ссылке здесь самое место =) Как раз там сейчас идёт обсуждение некоторых важных технических моментов.

Самое место коду ОТСЮДА - в ТОЙ теме, в единой хорошей теме с единым обсуждением. Девушку из предыдущей своей темы про Outlook выгнали в новую тему в "Другие приложения" http://www.excelworld.ru/forum/3-11719-120301-16-1416334621 , решение запостили здесь, обсуждение ведем там - прекрасно, даже на три темы вопрос размазался :)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 25.11.2014, 11:12
 
Ответить
Сообщение
этой ссылке здесь самое место =) Как раз там сейчас идёт обсуждение некоторых важных технических моментов.

Самое место коду ОТСЮДА - в ТОЙ теме, в единой хорошей теме с единым обсуждением. Девушку из предыдущей своей темы про Outlook выгнали в новую тему в "Другие приложения" http://www.excelworld.ru/forum/3-11719-120301-16-1416334621 , решение запостили здесь, обсуждение ведем там - прекрасно, даже на три темы вопрос размазался :)

Автор - Gustav
Дата добавления - 25.11.2014 в 11:09
Rioran Дата: Вторник, 25.11.2014, 11:36 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
даже на три темы вопрос размазался

Выражаю протест, Herr Gustav. Ошибка минимум на 50%. В приложенной Вами ссылке решается принципиально другая задача. Таково моё видение.

место коду ОТСЮДА - в ТОЙ теме

Выражаю частичное согласие, Herr Gustav. Люблю в каждой отдельной теме решать отдельный вопрос. Задумка была следующей: создать решение для себя (аве спортивный интерес), выложить его в "Готовые", а под пользователя допиливать уже в отдельной теме. Возможно, моя педантичность переходит некоторые границы. Если мои опасения по поводу перегиба с созданием множества тем подтвердит ещё один форумчанин - планка по различию отдельных тем будет снижена.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение
даже на три темы вопрос размазался

Выражаю протест, Herr Gustav. Ошибка минимум на 50%. В приложенной Вами ссылке решается принципиально другая задача. Таково моё видение.

место коду ОТСЮДА - в ТОЙ теме

Выражаю частичное согласие, Herr Gustav. Люблю в каждой отдельной теме решать отдельный вопрос. Задумка была следующей: создать решение для себя (аве спортивный интерес), выложить его в "Готовые", а под пользователя допиливать уже в отдельной теме. Возможно, моя педантичность переходит некоторые границы. Если мои опасения по поводу перегиба с созданием множества тем подтвердит ещё один форумчанин - планка по различию отдельных тем будет снижена.

Автор - Rioran
Дата добавления - 25.11.2014 в 11:36
Gustav Дата: Вторник, 25.11.2014, 13:17 | Сообщение № 6
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
решается принципиально другая задача

Да примерно такая же, только с другим типом элемента. По существу один тот же сценарий (принципиальный):
* CreateObject("Outlook...
* далее CreateItem нужного типа
* далее прописываем свойства Item'а
* и заключительное .Save или .Send


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
решается принципиально другая задача

Да примерно такая же, только с другим типом элемента. По существу один тот же сценарий (принципиальный):
* CreateObject("Outlook...
* далее CreateItem нужного типа
* далее прописываем свойства Item'а
* и заключительное .Save или .Send

Автор - Gustav
Дата добавления - 25.11.2014 в 13:17
Gustav Дата: Вторник, 25.11.2014, 20:53 | Сообщение № 7
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Примерно такова процедура по добавлению встречи в ЛЮБОЙ календарь:
[vba]
Код
Sub addAppointmentToAnyOutlookCalendarFromExcel()

     Dim objApp          As Object 'Outlook.Application
     Dim objCalendar     As Object 'Outlook.Folder
     Dim objExplorer     As Object 'Outlook.Explorer
     Dim objModule       As Object 'Outlook.CalendarModule
     Dim objGroup        As Object 'Outlook.NavigationGroup
     Dim objNavFolder    As Object 'Outlook.NavigationFolder
     Dim objAppoint      As Object 'Outlook.AppointmentItem
      
     Set objApp = CreateObject("Outlook.Application")
     Set objCalendar = objApp.Session.GetDefaultFolder(9) '9 = olFolderCalendar
     Set objExplorer = objCalendar.GetExplorer
      
     Set objModule = objExplorer.NavigationPane.Modules.Item("Календарь")
     Set objGroup = objModule.NavigationGroups.Item("Мои календари") '.Item("Общие календари")
     Set objNavFolder = objGroup.NavigationFolders.Item("Calendar") '.Item("отгулы, отпуска")
      
     Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem
                
     With objAppoint
         .Start = DateSerial(2014, 11, 25) + TimeValue("23:45:00")
         .Duration = 30
         .Subject = "subject of appointment"
         .Save
     End With
      
     Set objAppoint = Nothing
     Set objNavFolder = Nothing
     Set objGroup = Nothing
     Set objModule = Nothing
     Set objExplorer = Nothing
     Set objCalendar = Nothing
      
     objApp.Quit
     Set objApp = Nothing

End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПримерно такова процедура по добавлению встречи в ЛЮБОЙ календарь:
[vba]
Код
Sub addAppointmentToAnyOutlookCalendarFromExcel()

     Dim objApp          As Object 'Outlook.Application
     Dim objCalendar     As Object 'Outlook.Folder
     Dim objExplorer     As Object 'Outlook.Explorer
     Dim objModule       As Object 'Outlook.CalendarModule
     Dim objGroup        As Object 'Outlook.NavigationGroup
     Dim objNavFolder    As Object 'Outlook.NavigationFolder
     Dim objAppoint      As Object 'Outlook.AppointmentItem
      
     Set objApp = CreateObject("Outlook.Application")
     Set objCalendar = objApp.Session.GetDefaultFolder(9) '9 = olFolderCalendar
     Set objExplorer = objCalendar.GetExplorer
      
     Set objModule = objExplorer.NavigationPane.Modules.Item("Календарь")
     Set objGroup = objModule.NavigationGroups.Item("Мои календари") '.Item("Общие календари")
     Set objNavFolder = objGroup.NavigationFolders.Item("Calendar") '.Item("отгулы, отпуска")
      
     Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem
                
     With objAppoint
         .Start = DateSerial(2014, 11, 25) + TimeValue("23:45:00")
         .Duration = 30
         .Subject = "subject of appointment"
         .Save
     End With
      
     Set objAppoint = Nothing
     Set objNavFolder = Nothing
     Set objGroup = Nothing
     Set objModule = Nothing
     Set objExplorer = Nothing
     Set objCalendar = Nothing
      
     objApp.Quit
     Set objApp = Nothing

End Sub
[/vba]

Автор - Gustav
Дата добавления - 25.11.2014 в 20:53
Ankalim Дата: Четверг, 29.10.2015, 14:24 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Gustav, VB ругается на эту строчку
[vba]
Код
Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem
[/vba]
в чем может быть проблема?
Может скинете пример?


Сообщение отредактировал Serge_007 - Четверг, 31.12.2015, 01:01
 
Ответить
СообщениеGustav, VB ругается на эту строчку
[vba]
Код
Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem
[/vba]
в чем может быть проблема?
Может скинете пример?

Автор - Ankalim
Дата добавления - 29.10.2015 в 14:24
Gustav Дата: Четверг, 29.10.2015, 21:11 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Пойду в обратном порядке.
Может скинете пример?

Постом выше. Только что проверил - всё работает! Outlook 2013.
в чем может быть проблема?

Уверены, что у Вас существует календарь с маршрутом "Календарь \ Мои календари \ Calendar" ? Если нет такого, то мы близки к разгадке и, возможно, надо просто подправить названия в .Item("...")
VB ругается на эту строчку
Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem

А сразу не сказать, чем именно он ругается? А ругается, наверное, этим:
Run-time error '91':
Object variable or With block variable not set

В общем, маршрут к календарю проверяйте.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПойду в обратном порядке.
Может скинете пример?

Постом выше. Только что проверил - всё работает! Outlook 2013.
в чем может быть проблема?

Уверены, что у Вас существует календарь с маршрутом "Календарь \ Мои календари \ Calendar" ? Если нет такого, то мы близки к разгадке и, возможно, надо просто подправить названия в .Item("...")
VB ругается на эту строчку
Set objAppoint = objNavFolder.Folder.Items.Add(1) '1 = olAppointmentItem

А сразу не сказать, чем именно он ругается? А ругается, наверное, этим:
Run-time error '91':
Object variable or With block variable not set

В общем, маршрут к календарю проверяйте.

Автор - Gustav
Дата добавления - 29.10.2015 в 21:11
WRaitH Дата: Пятница, 13.11.2015, 15:33 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток.
Товарищи помогите пожалуйста с кодом.
Макрос который выше под свои нужды переделать не смог.
Кое как написал (переписал) код для создания встречи в Outlook данными их Excel но он какой то корявый.....
Вот в чем смысл: Как обычно есть таблица Excel (воронка продаж) (во вложении)
В нее вносятся клиенты и даты проведения "Встречи" или "Звонка"
Так вот если это "Встреча" и в столбце "F" оборот составляет >=250 то в календаре должно появиться: СХ:А:2: Наименование клиента (из столбца "С"), соответственно если оборот от 100-250 то СХ:В:2:Наименование клиента и если оборот <=50 то СХ:С:3:Наименование клиента
И если в столбце это "Звонок" то в календаре должно появиться СХ:С:3:Наименование клиента

С горем пополам получилось сделать выгрузку с "Встреча" или "Звонок", а вот с оборотом засада.
Помогите пожалуйста.
Если приведете код в нормальный вид и что бы он работам быстрее буду очень благодарен
[vba]
Код
Attribute VB_Name = "Module2"
Sub AddToOutlook()

Dim olAppointment As Outlook.AppointmentItem
Dim olApp As Excel.Application
Dim lngRow As Long, shtSource
Dim outapp As Outlook.Application

Dim x As Date
On Error Resume Next
        Set olApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
        Set olApp = CreateObject("Excel.Application")
End If

On Error GoTo 0
        Set shtSource = ThisWorkbook.Sheets("Воронка")

For i = 2 To 404   'Число строк по которое работает цикл выгрузки в календарь

If shtSource.Cells(i, 10) = "" Then 'если не будет значения - выгрузка не происходит

End If

' проверка значения "Встреча"

If shtSource.Cells(i, 15) = "встреча" Then   ' Условие по которому работает выгрузка
If shtSource.Cells(i, 10) > 0 Then           ' Условие по которому работает выгрузка

x = Cells(i, 10) ' дата

        Set outapp = New Outlook.Application
        Set olAppointment = outapp.CreateItem(1) ' создание события в Outlook "встреча"

    With olAppointment
        .Subject = "СХ: " + shtSource.Cells(i, 2)                   'тема
        .Location = shtSource.Cells(i, 14)                          'место
        .Start = shtSource.Cells(i, 10) + shtSource.Cells(i, 11)    'начало события
        .Duration = 60                    'продолжительность события
        .Body = shtSource.Cells(i, 17)                    'Тело письма
        .Categories = "Встреча с клиентом"                          ' категория в Outllok'е для раскраски
        .Save                    'сохранить
'        .Display                    'показать
'        .Send                    'отправить

End With

End If
End If

' проверка значения "Звонок"

If shtSource.Cells(i, 15) = "звонок" Then ' Условие по которому работает выгрузка

x = Cells(i, 10) ' дата

        Set outapp = New Outlook.Application
        Set olAppointment = outapp.CreateItem(1)

    With olAppointment
        .Subject = "ОТ: " + shtSource.Cells(i, 2)                   'тема
        .Location = shtSource.Cells(i, 14)                          'место
        .Start = shtSource.Cells(i, 10) + shtSource.Cells(i, 11)    'начало события
        .Duration = 30                    'продолжительность события
        .Body = shtSource.Cells(i, 17)                    'Тело письма
'        .Categories = "Встреча с клиентом"                          ' категория в Outllok'е для раскраски
        .Save                    'сохранить
'        .Display                    'показать
'        .Send                    'отправить
End With
End If
Next i
End Sub
[/vba]
К сообщению приложен файл: 3829048.xlsm (67.7 Kb)
 
Ответить
СообщениеДоброго времени суток.
Товарищи помогите пожалуйста с кодом.
Макрос который выше под свои нужды переделать не смог.
Кое как написал (переписал) код для создания встречи в Outlook данными их Excel но он какой то корявый.....
Вот в чем смысл: Как обычно есть таблица Excel (воронка продаж) (во вложении)
В нее вносятся клиенты и даты проведения "Встречи" или "Звонка"
Так вот если это "Встреча" и в столбце "F" оборот составляет >=250 то в календаре должно появиться: СХ:А:2: Наименование клиента (из столбца "С"), соответственно если оборот от 100-250 то СХ:В:2:Наименование клиента и если оборот <=50 то СХ:С:3:Наименование клиента
И если в столбце это "Звонок" то в календаре должно появиться СХ:С:3:Наименование клиента

С горем пополам получилось сделать выгрузку с "Встреча" или "Звонок", а вот с оборотом засада.
Помогите пожалуйста.
Если приведете код в нормальный вид и что бы он работам быстрее буду очень благодарен
[vba]
Код
Attribute VB_Name = "Module2"
Sub AddToOutlook()

Dim olAppointment As Outlook.AppointmentItem
Dim olApp As Excel.Application
Dim lngRow As Long, shtSource
Dim outapp As Outlook.Application

Dim x As Date
On Error Resume Next
        Set olApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
        Set olApp = CreateObject("Excel.Application")
End If

On Error GoTo 0
        Set shtSource = ThisWorkbook.Sheets("Воронка")

For i = 2 To 404   'Число строк по которое работает цикл выгрузки в календарь

If shtSource.Cells(i, 10) = "" Then 'если не будет значения - выгрузка не происходит

End If

' проверка значения "Встреча"

If shtSource.Cells(i, 15) = "встреча" Then   ' Условие по которому работает выгрузка
If shtSource.Cells(i, 10) > 0 Then           ' Условие по которому работает выгрузка

x = Cells(i, 10) ' дата

        Set outapp = New Outlook.Application
        Set olAppointment = outapp.CreateItem(1) ' создание события в Outlook "встреча"

    With olAppointment
        .Subject = "СХ: " + shtSource.Cells(i, 2)                   'тема
        .Location = shtSource.Cells(i, 14)                          'место
        .Start = shtSource.Cells(i, 10) + shtSource.Cells(i, 11)    'начало события
        .Duration = 60                    'продолжительность события
        .Body = shtSource.Cells(i, 17)                    'Тело письма
        .Categories = "Встреча с клиентом"                          ' категория в Outllok'е для раскраски
        .Save                    'сохранить
'        .Display                    'показать
'        .Send                    'отправить

End With

End If
End If

' проверка значения "Звонок"

If shtSource.Cells(i, 15) = "звонок" Then ' Условие по которому работает выгрузка

x = Cells(i, 10) ' дата

        Set outapp = New Outlook.Application
        Set olAppointment = outapp.CreateItem(1)

    With olAppointment
        .Subject = "ОТ: " + shtSource.Cells(i, 2)                   'тема
        .Location = shtSource.Cells(i, 14)                          'место
        .Start = shtSource.Cells(i, 10) + shtSource.Cells(i, 11)    'начало события
        .Duration = 30                    'продолжительность события
        .Body = shtSource.Cells(i, 17)                    'Тело письма
'        .Categories = "Встреча с клиентом"                          ' категория в Outllok'е для раскраски
        .Save                    'сохранить
'        .Display                    'показать
'        .Send                    'отправить
End With
End If
Next i
End Sub
[/vba]

Автор - WRaitH
Дата добавления - 13.11.2015 в 15:33
petrstepanov Дата: Пятница, 08.07.2016, 14:36 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Rioran, здравствуйте! Спасибо за код, очень круто. Подскажите, как мне создать такое же собрание таким же кодом, но только с перламутровыми пуговицами со автоматической вставкой встречи Skype Meeting? Для каждой строчки - свой Skype Meeting, чтобы группы разных пользователей были разнесены по своим Skype Meetings. Обычно делаю вручную, как на картинке - нажимаю 1, получаю 2.
 
Ответить
СообщениеRioran, здравствуйте! Спасибо за код, очень круто. Подскажите, как мне создать такое же собрание таким же кодом, но только с перламутровыми пуговицами со автоматической вставкой встречи Skype Meeting? Для каждой строчки - свой Skype Meeting, чтобы группы разных пользователей были разнесены по своим Skype Meetings. Обычно делаю вручную, как на картинке - нажимаю 1, получаю 2.

Автор - petrstepanov
Дата добавления - 08.07.2016 в 14:36
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!