Работа с задачами Outlook из Excel

25 апреля 2013, VBA, Konstantin

Получать информацию о выполненных и будущих задачах, распланированных в соответствующем разделе 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

Продолжить чтение »

Теги:
 

CheckBox в ячейках Excel

25 апреля 2013, VBA, Konstantin

Следующий код, помещённый в 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

Результат работы макроса выглядит следующим образом:

Excel_CheckBox
Источник

Теги:
 

Если, например, требуется получить одно единственное значение с помощью запроса к базе данных (сам запрос может иметь заранее заданную конструкцию, меняющуюся в зависимости от определённых условий), то пригодится следующией код.

Для 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) будут хранится временные массивы и итоговый результат.

Продолжить чтение »

Теги: