Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Можно ли в Запросе как-то сослаться на промежуточный шаг другого Запроса в PQ?
 
Гран мерси! Очень круто!
Можно ли в Запросе как-то сослаться на промежуточный шаг другого Запроса в PQ?
 
Всем привет.
Вопрос  в заголовке.
То есть, если в Запросе 1 есть 3 шага, где Шаг3 -это результат.
То можно ли каким-то образом в Запросе 2 получить не результат Запроса 1 ( то есть Шаг3) , а к примеру получить Шаг2 из Запроса1 ?
POWER QUERY - Создать функцию которая создает и удаляет столбцы по условию, Создать функцию создающую и удаляющую столбец по условию
 
Спасибо, теперь понятно !
POWER QUERY - Создать функцию которая создает и удаляет столбцы по условию, Создать функцию создающую и удаляющую столбец по условию
 
Цитата
PooHkrd написал:
если хочется именно так
то есть конструкция let in позволяет как в DAX внутри переменных сохранять контекст фильтра ?

@Andrey VG и PooHkrd , спасибо вам огромное
POWER QUERY - Создать функцию которая создает и удаляет столбцы по условию, Создать функцию создающую и удаляющую столбец по условию
 
Цитата
Андрей VG написал:
Концепция простая
Подскажите пожалуйста логику работы конструкции ()=> внутри запроса ниже  шаги Res1 и Res2.
Никак не пойму как работает эта штука :(

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    ИТ = Table.TransformColumnTypes(Источник,{{"Id", Int64.Type}, {"Date", type date}}),
    
    // Шаг Res1 отрабатывает отлично
    Res1 = Table.AddColumn(ИТ, "Промо", each Text.Combine(
    List.Transform(
        Table.SelectRows( 
            Промо,
            (row) => row[Date1] <= [Date] and row[Date2] >=   [Date] and row[Id] = [Id]
        )[PromoID],
    (y) => Text.From(y)
    ),
    ", "
  )),

      // Шаг Res2 не работает
     Res2 = Table.AddColumn(ИТ, "Промо", each Text.Combine(
       List.Transform(
        Table.SelectRows(Промо,
        each Промо{_}[Date1]<= ИТ[Date] and Промо{_}[Date2] >= ИТ[Date] and Промо{_}[Id] = ИТ[Id])[PromoID],
     (y) => Text.From(y)), ",") )
in
    Res1 



Здесь шаг Res1 содержит конструкцию  
(row) => row[Date1] <= [Date] and row[Date2] >=   [Date] and row[Id] = [Id]
Которая как я понимаю работает так:
Объявляется безымянная функция с одним параметром row ,
далее после знаков => пишем выражение , которое будет делать эта функция с переданным в нее параметром row.
Далее непонятно откуда PQ узнал, что row - это номер итерируемой строки в Таблице под названием Промо ?

Я попытался переписать эту конструкцию через each в шаге Res2 вот так:
each Промо{_}[Date1]<= ИТ[Date] and Промо{_}[Date2] >= ИТ[Date] and Промо{_}[Id] = ИТ[Id]

то есть в фигурных скобках явно указываю, что нужно пробежать именно по всем строкам таблицы Промо , но этот шаг выдает ошибку , в отличие от шага Res1


Чувствую, что это из-за полного моего непонимания логики этой конструкции.
Буду благодарен, если кто-то растолкует  как это работает . (справку мелкософта читал)


Изменено: t330 - 23.10.2020 20:39:17
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
Вот здесь я сделал расчет этой формулы в Power BI, но не удалось этот расчет сделать точно также как в Экселе, где столбец E рассчитывается сам в себе.

В DAX непонятно как вычислить параметр add4 , который используется для расчета столбца Col , не по столбцу E, а по самому столбцу Col, как это умеет Эксель...
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
Цитата
Максим Зеленский написал:
это, конечно, только для такого вычисления.
Спасибо за ответ. Конечно, это не то что нужно.

Оригинальная задача ниже в сообщении.
Изменено: t330 - 02.09.2020 21:41:05
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
buchlotnik,Спасибо!
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
buchlotnik, подскажите пожалуйста еще такой нюанс, как сделать так, чтобы эту формулу можно было использовать для вычисления значения в ячейке в столбце П как на картинке
Код
=Table.AddColumn(#"Добавлен индекс", "П", each List.Generate(()=>[s=1,i=0,n=1], each [i]<#"Добавлен индекс"{2}[Индекс],each [i=[i]+1,n=[s]+1,s=[s]+n], each [n]))


Сейчас на картинке вычисление в столбце П не верное, так как Condition ДЛЯ КАЖДОЙ строки
проверяет [i] по фиксированной строке
Код
#"Добавлен индекс"{2}[Индекс]
 и для каждой строки выдает список 1, 2 ,4


А нужно , как - то сделать так, чтобы для каждой строки выдавался свой список.
То есть, для строки с Индексом 1 , нужен список составленный по Condition
Код
each [i]<#"Добавлен индекс"{0}[Индекс]

Для строки с Индексом 2 , нужен список составленный по Condition
Код
each [i]<#"Добавлен индекс"{1}[Индекс]

Для строки с Индексом 3 , нужен список составленный по Condition
Код
each [i]<#"Добавлен индекс"{2}[Индекс]

Для строки с Индексом 4 , нужен список составленный по Condition
Код
each [i]<#"Добавлен индекс"{3}[Индекс]
и тд
Изменено: t330 - 02.09.2020 17:35:47
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
Цитата
buchlotnik написал:
нет, вычисляется третий; а из третьего Selector берет необходимое, в данном случае только значение поля n.
Спасибо за ответ. По поводу Selector берет из третьего параметра под названием Next значение поля n...

Как же так? Допустим считаем
Первая итерация:
1. ()=>[s=1,i=0,n=1]  - initial
2.  each [i]<6 -  Condition  вернул True
3. переходим к третьему параметру функции List.generate под названием Next = each [i=[i]+1,n=[s]+1,s=[s]+n] .
То есть, на выходе next вернет список
[i=1, n=2, s = 3]

4.вычисляется 4й параметр функции  List.generate под названием Selector = each [n].  
То есть, вернется [n] =2 , так как в третьем шаге функция next вернула [n] =2
,
То есть, получается  , что по такой логике первая итерация вернет нам 2  , а на самом деле возвращает 1...
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
Цитата
buchlotnik написал:
PQ
Спасибо за код. Не могли бы пояснить логику работы?
Прочитал вот эту статью http://excel-inside.pro/ru/blog/2017/06/15/%d0%b3%d0%b5%d0%bd%d0%b5%d1%80%d0%b0%­d1%82%d0%be%d1%80-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd­%d1%8b%d1%85-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%be%d0%b2-%d0%b2-power-query-%d0%b8-pow/ по List.Generate ... Стало понятнее,но не до конца.

List.Generate(()=>[s=1,i=0,n=1], each [i]<6,each [i=[i]+1,n=[s]+1,s=[s]+n], each [n])

Я так понимаю:
1. ()=>[s=1,i=0,n=1]  - это Функция initial , которая не имеет аргументов и ее вычисленное значение равно значению выражения, указанного внутри нее, то есть s=1 i=1 n=1
Не подскажете , почему здесь квадратные скобки []?


2.  each [i]<6 - Это функция Condition  , которая принимает на вход s=1 i=1 n=1 из функции inital в предыдущем шаге и проверяет для каждой строки (each) условие [i]<6

3.если Condition на шаге 2 вернул True, то вычисляется 4й параметр функции  List.generate под названием Selector = each [n].  Функция Selector вычисляет следующий элемент списка. В нашем случае 2й элемент списка будет равен 1 , так как из 1го шага пришел [n] =1

4. если Condition на шаге 2 вернул True , то переходим к третьему параметру функции List.generate под названием Next = each [i=[i]+1,n=[s]+1,s=[s]+n] .
Функция Next вычисляет следующие значения параметров s i n для использования их заново во 2м и 3м  шаге. То есть, на выходе next вернет список [i=1, n=2, s = 3]
и мы снова идем на 2й шаг , проверять условие each[i] <6  

Поправьте пожалуйста, если я где-то ошибаюсь в рассуждениях
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 
Цитата
PooHkrd написал:
В PQ такое сделать и загрузить в модель не покатит?
Можно и в PQ. Не подскажете как?
Можно ли в вычисляемом столбце DAX сделать то, что умеет Эксель рассчитывая ячейки в столбце ,ссылаясь на предыдущие ячейки в этом же столбце
 

Можно ли в Дакс создать вот такой вычисляемый столбец, который при вычислении своих ячеек , ссылается на предыдущую ячейку из себя же , как в Экселе?
Изменено: t330 - 02.09.2020 14:41:29
Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Цитата
Андрей VG написал:
И не должен. Тут два пути, либо попытаться указать тип числовой и проверить столбец на ошибки, или проверить, что столбец содержит не целые числа (в примере просто числа).
Спасибо!
Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Цитата
Андрей VG написал:
Следовательно, нужно отдельно проверять, содержит ли столбец какую-нибудь ошибку и на основании этого менять указание типа данных. Иначе никак.
Научите пожалуйста как это сделать?
Вот такой код не работает


И еще вы сказали, что можно сделать обработку ошибок , если к примеру у меня ошибка появляется на уровне слияния запросов из-за того, что например в одном запросе поменялись какие-то источники (поменялся состав столбцов в файлу одного запроса) ... Не сочтите за наглость , но как это прописать?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3_2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник, {each try {"Num", Int64.Type} otherwise  {"Num", type text} })
in
    #"Измененный тип"  



Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Цитата
Андрей VG написал:
где? По вашему примеру, если поменять имя таблицы на Таблица3_2, то всё прекрасно загружается. Правда, вы сделали sefl reference таблицу, ну, это уже не та проблема.Или вы хотели разобрать обработку ошибки, когда неверный источник?
Да , если в источнике заменить Таблица3 на Таблица3_2 , то якобы мой неправильный код сработает. На самом деле нет, так как в этом случае в самом источнике (Таблица3_2) в столбце Num просто не возникает никаких ошибок при изменении типа переменной с Text на int.64 , потому что в этом столбце только цифры и пустые ячейки. В общем, мой "обработчик" просто ничего не делает.  
Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Все равно не срабатывает
Вот видео на 1 минуту  https://radikal.ru/video/WUyGMi7CDdE
Изменено: t330 - 31.08.2020 17:58:53
Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Андрей, спасибо за ссылку, только я не смог применить ...

Например, хочу сделать так, чтобы ошибка для преобразовании типа данных обрабатывалась как в коде ниже, но не срабатывает
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    #"Измененный тип" = try Table.TransformColumnTypes(Источник,{{"Num", Int64.Type}}) otherwise Table.TransformColumnTypes(Источник,{{"Num", type text}})
in
    #"Измененный тип"
Изменено: t330 - 31.08.2020 16:23:53 (добавлен файл примера)
Обработка ошибок в Power Query, В зависимости от последовательности шагов результат разный
 
Народ, а есть ли в PQ на M возможность прописать обработчик ошибок , который будет например при возникновении ошибки на каком -то шаге , заменять ошибку на null или на что-то другое?
Как убрать из формул Оператор неявного пересечения: @ ?
 
Да, мне это нужно было
Как убрать из формул Оператор неявного пересечения: @ ?
 
Разобрался, спасибо.
Надо было убрать галку вот тут.
Как убрать из формул Оператор неявного пересечения: @ ?
 
Народ. Напомните пожалуйста где в настройках Экселя нужно поставить галочку, чтобы формула была в обычно виде без знака @ ("неявное пересечение" ) как на картинке.
То есть , чтобы было просто =L6
Изменено: t330 - 13.08.2020 16:07:47
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Александр Макаров,
Единственный минус такого решения - это то, что даже когда программа аутлук запущена на компе, но само окно не активно, то когда приходят новые письма, макрос события не реагирует.
В итоге, в аутлуке видно , что новое письмо с вложением пришло, оно имеет статус "Не прочтенное" , но вложения из этого письма не копируются в папку на компе, так как макрос не запустился из-за того, что окно аутлука не активно.

Приходится активировать окно аутлука и ждать пока придет какое-нибудь новое письмо, что запустился макрос.


Код
Private Sub Application_NewMail()
Call saveAttachtoDisk
 
 
End Sub.
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Александр Макаров,

Всё работает!
Сделал как вы сказали.

Код основного модуля:
Код
Option Explicit


Public Sub saveAttachtoDisk()  'объявляем процедуру записи вложений писем в папку на компьютере.
  Const myFolder As String = "D:\YandexDisk\YandexDisk\" ' в константу MyFolder пишем путь куда сохранять вложения из писем,при этом название конечной папки sender_test.ru совпадает с адресом отправителя
  
  Dim myItem As Outlook.MailItem
  Dim oFolder As Outlook.folder
  Dim Account As Outlook.NameSpace
  
  Dim a As Integer ' вспомогательная переменная для разных нужд
  Dim i As Integer ' вспомогательная переменная для разных нужд
  Dim f As Integer 'вспомогательная переменная для разных нужд
  
  Dim SenderMail As String 'переменная для обозначения имени отправителя из писем которого мы будем вытаскивает вложения и записывать из в папку на компьютере
  Dim Savefolder As String ' переменная для записи пути к папке , куда скидываем наши вложения из аутлука
  Dim AccountName As String ' переменная для записи имени Учетной записи в аутлуке, где мы ищем наши письма с вложениями
  
  
  SenderMail = "sender_test.ru" ' от этого отправителя нужно сохранять файлы в папке D:\YandexDisk\YandexDisk\sender_test.ru
  AccountName = "account_user.ru" ' в этой учетной записи будем просматривать папки
  
  
  
  If Dir(myFolder & SenderMail, vbDirectory) = "" Then  ' проверяем , если на компе в каталоге D:\YandexDisk\YandexDisk\ папка sender_test.ru
    MkDir myFolder & SenderMail  ' и если папки sender_test.ru нет, то создаем её
  End If
  Savefolder = myFolder & SenderMail ' записываем в переменную путь к нашей целевой папке на компьютере  ( D:\YandexDisk\YandexDisk\ папка sender_test.ru )
  
  'Debug.Print savefolder
  
  Set Account = Application.GetNamespace("MAPI") ' получаем доступ к учетным записям в аутлук
  'Set inboxFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) ' получаем коллекцию писем в папке Входящие (включая подпапки) в аутлук
  
  For f = 1 To Account.Folders.Count  ' пробегаем циклом по всем учетным записям в аутлуке
  If Account.Folders(f).Name = AccountName Then  ' если имя учетной записи равно AccountName , то
    Set oFolder = Account.Folders(f).Folders(2) ' получаем коллекцию писем в учетной записи AccountName в папке номер 11
  
    
    For i = 1 To oFolder.Items.Count  ' пробегаем циклом по каждому элементу в папке oFolder
      If oFolder.Items(i).Class = olMail Then   ' если элемент в папке oFolder - это письмо, то
      Set myItem = oFolder.Items.Item(i) ' присваиваем переменной myItem это письмо
      
          If myItem.SenderEmailAddress = SenderMail And myItem.UnRead = True Then ' если в этом письме адрес отправителя равен SenderMail и письмо не прочитано , то
                    For a = 1 To myItem.Attachments.Count
                      If myItem.Attachments.Item(a).fileName Like "*.xl*" Then
                            myItem.Attachments.Item(a).SaveAsFile Savefolder & "/" & myItem.Attachments.Item(a).fileName
                      End If
                    Next
          myItem.UnRead = False  ' отмечаем письмо как прочитанное, чтобы не просматривать его в следущей итерации цикла
          End If
       End If
    Next i
  End If
  Next f

  
End Sub



'Процедура показывает все учетные записи и все папки в них
Sub Учетки_и_папки()


   Dim x, xx
   Dim oNspace As Outlook.NameSpace
   Set oNspace = Application.GetNamespace("MAPI")
    For x = 1 To oNspace.Folders.Count
        Debug.Print oNspace.Folders(x).Name & " ==> " & x
        For xx = 1 To oNspace.Folders(x).Folders.Count
            Debug.Print vbTab & oNspace.Folders(x).Folders(xx).Name & " ==> " & xx
        Next
        Debug.Print "============== "
    Next
End Sub


Код внутри ThisOutloksession
Код
Private Sub Application_NewMail()
Call saveAttachtoDisk


End Sub


Спасибо за помощь!
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Юрий М, прошу извинить. Больше размещать тут ничего не буду.
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Александр Макаров, спасибо за наводку.
Пойду допиливать дальше. Что получится выложу тут  
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Юрий М, я же написал, что шучу?

К тому же, на этом форуме я видел вопросы по макросам относящимся к Аутлуку. Почему претензия ко мне?
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
vikttur,
формально-буквенная связь с Эксель есть, я же копирую только экселевские файлы из аутлука в папку на компе:)

Шучу, не сердитесь.  
Пересылка файлов Эксель из аутлука в папку на локальном комп
 
Всем доброго времени суток!

Есть ежедневный отчет в виде файлов Эксель , который падает в яндекс-почту, ну или в Outlook на компе завязанный на Яндекс-почту.
Эти файлы приходится вручную перетаскивать в папку на компе или в облаке , чтобы Power BI тоже ежедневно забирал их оттуда и обновлял свои дэшборды.

Кто знает, как сделать так, чтобы эти Эксель файлы приходящие в аутлук сразу при получении автоматом падали в специальную папку на компе  (в данном случае адрес папки D:\YandexDisk\YandexDisk\ info_mail.ru ) ? Чтобы не перетаскивать их вручную?

Отчеты всегда приходят с одного адреса info_mail.ru и падают в папку под номером 11 в учетной записи account_ya.ru   (здесь и далее знак _ подразумевает @ )

Отчеты приходят на конкретную учетную запись с именем account_ya.ru  (в аутлуке есть несколько учетных записей, но вложения нужно копировать , только из писем приходящих на конкретно одну учетную запись)

Аутлук всегда открыт на компе.

Помогите пожалуйста допились код, чтобы файлы автоматом падали в папку при получении нового письма от info_mail.ru на аккаунт  account_ya.ru

Внизу рабочий макрос Sub saveAttachtoDisk(), который я скомпановал из разных кусков и он прекрасно работает , если его запускать руками.
(второй макрос Sub Учетки_и_папки()  - это чисто вспомогательный макрос от уважаемого The Priest для определения номеров папок и номеров учеток в аутлуке)

Нужно сделать так , чтобы мой макрос Sub saveAttachtoDisk() срабатывал бы как правило в аутлуке при приходе новой почты.

Я попытался добавить параметр внутрь процедуры  Sub saveAttachtoDisk( myItem as MailItem) ) ,чтобы можно было этот скрипт выбирать для создания правила в аутлуке  (как вот тут рекомендуют https://docs.microsoft.com/ru-ru/previous-versions/office/troubleshoot/office-developer/create-scrip... ).
Скрипт стало можно выбирать, но тогда макрос не срабатывает. Ничего никуда не копирует....

Не могу понять, как из моего макроса сделать рабочий скрипт для правила в аутлуке.
Объясните плиз кто разбирается.
Спасибо.

Код
Option Explicit


Public Sub saveAttachtoDisk()  'объявляем процедуру записи вложений писем в папку на компьютере.
  Const myFolder As String = "D:\YandexDisk\YandexDisk\" ' в константу MyFolder пишем путь куда сохранять вложения из писем,при этом название конечной папки info_mail.ru совпадает с адресом отправителя
  
  Dim myItem As Outlook.MailItem
  Dim oFolder As Outlook.folder
  Dim Account As Outlook.NameSpace
  
  Dim a As Integer ' вспомогательная переменная для разных нужд
  Dim i As Integer ' вспомогательная переменная для разных нужд
  Dim f As Integer 'вспомогательная переменная для разных нужд
  
  Dim SenderMail As String 'переменная для обозначения имени отправителя из писем которого мы будем вытаскиваеть вложения и записывать из в папку на компьютере
  Dim Savefolder As String ' переменная для записи пути к папке , куда скидываем наши вложения из аутлука
  Dim AccountName As String ' переменная для записи имени Учетной записи в аутлуке, где мы ищем наши письма с вложениями
  
  
  SenderMail = "info_mail.ru" ' от этого отправителя нужно сохранять файлы в папке D:\YandexDisk\YandexDisk\info_mail.ru
  AccountName = "account_ya.ru" ' в этой учетной записи будем просматривать папки
  
  
  
  If Dir(myFolder & SenderMail, vbDirectory) = "" Then  ' проверяем , если на компе в каталоге D:\YandexDisk\YandexDisk\ папка info_mail.ru
    MkDir myFolder & SenderMail  ' и если папки info_mail.ru нет, то создаем её
  End If
  Savefolder = myFolder & SenderMail ' записываем в переменную путь к нашей целевой папке на компьютере  ( D:\YandexDisk\YandexDisk\ папка info_mail.ru )
  
  'Debug.Print savefolder
  
  Set Account = Application.GetNamespace("MAPI") ' получаем доступ к учетным записям в аутлук
  'Set inboxFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) ' получаем коллекцию писем в папке Входящие (включая подпапки) в аутлук
  
  For f = 1 To Account.Folders.Count  ' пробегаем циклом по всем учетным записям в аутлуке
  If Account.Folders(f).Name = AccountName Then  ' если имя учетной записи равно AccountName , то
    Set oFolder = Account.Folders(f).Folders(11) ' получаем коллекцию писем в учетной записи AccountName в папке номер 11
  
    
    For i = 1 To oFolder.Items.Count  ' пробегаем циклом по каждому элементу в папке oFolder
      If oFolder.Items(i).Class = olMail Then   ' если элемент в папке oFolder - это письмо, то
      Set myItem = oFolder.Items.Item(i) ' присваиваем переменной myItem это письмо
      
          If myItem.SenderEmailAddress = SenderMail Then ' если в этом письме адрес отправителя равен SenderMail , то

                    For a = 1 To myItem.Attachments.Count
                      If myItem.Attachments.Item(a).fileName Like "*.xl*" Then
                            myItem.Attachments.Item(a).SaveAsFile Savefolder & "/" & myItem.Attachments.Item(a).fileName
                      End If
                    Next

          End If
       End If
    Next i
  End If
  Next f

  
End Sub



'Процедура показывает все учетные записи и все папки в них
Sub Учетки_и_папки()


   Dim x, xx
   Dim oNspace As Outlook.NameSpace
   Set oNspace = Application.GetNamespace("MAPI")
    For x = 1 To oNspace.Folders.Count
        Debug.Print oNspace.Folders(x).Name & " ==> " & x
        For xx = 1 To oNspace.Folders(x).Folders.Count
            Debug.Print vbTab & oNspace.Folders(x).Folders(xx).Name & " ==> " & xx
        Next
        Debug.Print "============== "
    Next
End Sub
Изменено: t330 - 02.04.2020 20:45:33
Страницы: 1
Наверх