Листинг 3.44. Создание пользовательского меню (вариант 2)
Sub AddCustomMenu1()
' Добавление меню с названием «Архив» в часть меню, _
относящуюся к рабочей книге
With MenuBars(«Worksheet»).Menus.Add(Caption:="Архив")
' Добавление кнопки
.MenuItems.Add Caption:="Просмотр", OnAction:="Макрос1"
' Добавление подменю
With .MenuItems.AddMenu(Caption:="База данных")
' Добавление пунктов подменю
MenuItems.Add Caption:="Поставщики", OnAction:="Макрос2"
.MenuItems.Add Caption:="Покупатели", OnAction:="Макрос3"
End With
End With
End Sub
К аналогичному результату приведет использование также такого макроса (листинг 3.45).
Листинг 3.45. Создание пользовательского меню (вариант 3)
Sub AddCustomMenu2()
' Добавление меню с названием «Архив» в часть меню, _
относящуюся к рабочей книге
With MenuBars(«Worksheet»).Menus.Add(Caption:="Архив")
' Добавление кнопки
.MenuItems.Add Caption:="Просмотр", OnAction:="Макрос1"
' Добавление подменю
With .MenuItems.AddMenu(Caption:="База данных")
' Добавление первого пункта подменю
With .MenuItems.Add(Caption:="Поставщики")
' Настройка кнопки
.OnAction = «Макрос2»
End With
' Добавление второго пункта подменю
With .MenuItems.Add(Caption:="Покупатели")
' Настройка кнопки
.OnAction = «Макрос3»
End With
End With
End With
End Sub
Как и в первом случае, два последних макроса предусматривают использование дополнительных макросов Макрос1, Макрос2 и Макрос3.
Проверка наличия файла по указанному пути
При необходимости можно быстро проверить, существует ли файл по указанному адресу. Чаще всего для этого используется макрос, приведенный в листинге 3.46 (путь и название файла условные, взяты только для примера).
Листинг 3.46. Проверка наличия файла (вариант 1)
Sub VerifyFileLocation()
Dim strFileName As String
Dim strFileTitle As String
' Имя и путь искомого файла
strFileTitle = «primer.xls»
strFileName = «C:\Документы\primer.xls»
' Проверка наличия файла (функция Dir возвращает пустую _
строку, если по указанному пути файл обнаружить не удалось)
If Dir(strFileName) <> "" Then
MsgBox "Файл " & strFileTitle & « найден»
Else
MsgBox "Файл " & strFileTitle & « не найден»
End If
End Sub
Результатом выполнения данного макроса является выводимое на экран окно, в котором сообщается, существует данный файл по указанному адресу или нет (рис. 3.14).
Рис. 3.14. Результат поиска файла
Для такой же проверки можно применить макрос, код которого приведен в листинге 3.47 (путь и название файла условны).
Листинг 3.47. Проверка наличия файла (вариант 2)
Sub VerifyFileLocation1()
Dim strFileName As String
' Имя искомого файла
strFileName = «C:\Документы\primer.xls»
' Проверка наличия файла (функция Dir возвращает пустую _
строку, если по указанному пути файл обнаружить не удалось)
If Dir(strFileName) <> "" Then
MsgBox "Файл " & strFileName & « найден»
Else
MsgBox "Файл " & strFileName & « не найден»
End If
End Sub
После того как макрос будет применен, на экране также появится окно, аналогичное изображенному на рис. 3.14, с информационным сообщением о результатах проверки.
В приведенных выше макросах мы напрямую указывали имя искомого файла. Однако такой подход не всегда приемлем, поэтому иногда целесообразнее использовать макрос, код которого приведен в листинге 3.48.
Листинг 3.48. Поиск нужного файла
Sub FileSearch()
Dim strFileName As String
Dim strFolder As String
Dim strFullPath As String
' Задание имени папки для поиска
strFolder = InputBox(«Определите папку:»)
If strFolder = "" Then Exit Sub
' Задание имена файла для поиска
strFileName = Application.InputBox(«Введите имя файла:»)
If strFileName = "" Then Exit Sub
' При необходимости дополняем имя папки "\"
If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
' Полный путь файла
strFullPath = strFolder & strFileName
' Вывод окна с отчетом о поиске средствами VBA
MsgBox «Использование команды VBA...» & vbCrLf & vbCrLf & _
dhSearchVBA(strFullPath), vbInformation, strFullPath
' Вывод окна с отчетом о поиске средствами объекта _
FileSystemObject
MsgBox «Использование объекта FileSystemObject...» & vbCrLf
& _
vbCrLf & dhSearchFileSystemObject(strFullPath), vbInformation, _
strFullPath
End Sub
Function dhSearchVBA(varFullPath As Variant) As Boolean
' Использование команды VBA
dhSearchVBA = Dir(varFullPath) <> ""
End Function
Function dhSearchFileSystemObject(varFullPath As Variant) As
Boolean
Dim objFSObject As Object
' Использование объекта FileSystemObject
Set objFSObject = CreateObject(«Scripting.FileSystemObject»)
dhSearchFileSystemObject = objFSObject.FileExists(varFullPath)
End Function
В результате запуска макроса открывается окно, в котором указывается папка для поиска, а затем (после нажатия кнопки ОК) – имя искомого файла. В данном примере для поиска файла используются два разных метода. После ввода имени папки и файла они будут применены поочередно, и в каждом случае будет показан отдельный результат: если файл обнаружен по указанному пути, то отобразится значение True, в противном случае – False.
Читать дальше
Конец ознакомительного отрывка
Купить книгу