Получать информацию о выполненных и будущих задачах, распланированных в соответствующем разделе Outlook, можно с помощью кода из этой статьи. Может, например, пригодиться для автоматического формирования перечня задач находящихся в работе и уже исполненных.
Private Sub LoadTask() Dim fTasks As Outlook.MAPIFolder Dim Tasks As Outlook.Items Set fTasks = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks) Set Tasks = fTasks.Items Tasks.Sort "[StartDate]", True For i = 1 To Tasks.Count 'Тема задачи ActiveSheet.Range("A" & i).Value = _ Replace(Trim(Tasks(i).Subject), Chr(10), " ") 'Статус задчи If Tasks(i).Complete Then ActiveSheet.Range("B" & i).Value = "Завершена" Else ActiveSheet.Range("B" & i).Value = "В работе" End If 'Тип задчи If Tasks(i).IsRecurring Then ActiveSheet.Range("C" & sr).Value = "Регулярная задача" Else ActiveSheet.Range("C" & sr).Value = "Единичная задача" End If ActiveSheet.Range("D" & sr).Value = Tasks(i).StartDate 'Срок окончания задачи ActiveSheet.Range("E" & sr).Value = Tasks(i).DueDate 'Дата выполнения ActiveSheet.Range("F" & sr).Value = Tasks(i).DateCompleted 'Описание задачи ActiveSheet.Range("G" & sr).Value = Tasks(i).Body ActiveSheet.Range("H" & sr).Value = Tasks(i).Owner Next i End Sub |
Продолжить чтение »
Следующий код, помещённый в VBA редакторе на соответствующий лист, позволяет двойным кликом левой кнопки мыши по ячейке в первом столбце устанавливать в ней попеременном галочку, либо крестик.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Column = 1 Then Select Case .Value Case Is = "a" .Font.Name = "Marlett" .Value = "r" Case Is = "r" .Font.Name = "Marlett" .Value = "a" Case Else .Font.Name = "Marlett" .Value = "a" End Select Cancel = True End If End With End Sub |
Результат работы макроса выглядит следующим образом:
Если, например, требуется получить одно единственное значение с помощью запроса к базе данных (сам запрос может иметь заранее заданную конструкцию, меняющуюся в зависимости от определённых условий), то пригодится следующией код.
Для MS SQL
Sub Get_MSSQL_Data() Dim db As ADODB.Connection Dim rs As ADODB.Recordset Dim sqlStr As String Set rs = CreateObject("ADODB.Recordset") Set db = New ADODB.Connection db.Open _ "DRIVER={SQL Server};SERVER=SName;UID=UserName;PWD=Password;DATABASE=DBName" sqlStr = "SELECT Count(*) as cnt FROM [DBName].[DB].[Table]" rs.Open sqlStr, db While Not rs.EOF str1 = rs.Fields("cnt").Value rs.MoveNext Wend rs.Close db.Close End Sub |
Продолжить чтение »
Задача: Есть набор целых чисел (числа не повторяются)
1 3 5 7 8 9 11 2 25 30 |
Необходимо в Excel написать макрос, который выводит на лист «Результат» все комбинации чисел из набора, дающие в сумме 40. Каждое число можно использовать один раз. Полный перебор комбинаций нежелателен.
Дано: Книга Excel, сотоящая из двух листов. На первом листе (sh1) во второй строке располагается набор целых чисел, а в четвертой строке – необходимая сумма. На втором листе (sh2) будут хранится временные массивы и итоговый результат.
Продолжить чтение »