ПРИБЛИЗИТЕЛЬНО VBA

Excel VBA ENVIRON (окружающая среда)

В ПРИБЛИЗИТЕЛЬНО VBA функция (обозначает ОКРУЖАЮЩАЯ ОБСТАНОВКА), которую можно отнести к категории информационных функций, поскольку эта функция возвращает значения переменных среды операционной системы. Переменные среды (операционной системы) содержат информацию о профилях всех пользователей, имени пользователя, профиле пользователя, домашней папке пользователя и т. д. Эта функция возвращает строковое значение.

Синтаксис

Синтаксис среды VBA

Эта функция имеет только один аргумент: ‘Выражение.’ Мы можем указать числовая позиция (целочисленное значение), представляющее числовое положение переменной среды в таблице переменных среды или имя переменной сам.

Если мы указываем числовую позицию, то функция возвращает переменную окружения и ее значение со знаком равенства между ними.

Окружающая среда VBA 1.png

Если мы указываем имя переменной, то функция возвращает единственное значение.

VBA Около 1-2

Вывод:

VBA О 1-1

Как использовать функцию среды в VBA?

Вы можете скачать этот шаблон Excel VBA ENVIRON здесь – Шаблон Excel VBA ENVIRON

Пример №1

Откройте командную строку, используя функцию ENVIRON в VBA.

Чтобы сделать то же самое, шаги будут такими:

Вставьте командную кнопку с помощью ‘Вставлять’ команда, доступная в «Управление» группа в «Разработчик» вкладку или воспользуйтесь горячая клавиша эксельКлавиша быстрого доступа ExcelЯрлык Excel — это способ более быстрого выполнения ручного задания.читать далее (Альт + F11).

Пример среды VBA 1

Если «Разработчик» вкладка не видна, выполните следующие действия, чтобы сделать вкладку видимой.

Нажмите на ‘Файл’ и выбрать ‘Опции’ из списка.

Пример среды VBA 1-1

Выбирать «Настроить ленту» в меню слева и установите флажок «Разработчик» вкладку и нажмите на ‘В ПОРЯДКЕ.’

Пример среды VBA 1-2

Теперь «Вкладка «Разработчик» видно.

При вставке командной кнопки, если мы продолжаем нажимать кнопку клавиша ALT, тогда края командной кнопки будут вместе с границей ячейки. Изменяем свойства вставленной командной кнопки с помощью контекстного меню, которое получаем правым кликом по кнопке «Командная кнопка».

Пример среды VBA 1-3

Окно свойств

Пример среды VBA 1-4

Чтобы написать Код VBAКод VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи.читать далее для командной кнопки нам нужно выбрать командную кнопку и выбрать «Просмотреть код» из контекстного меню.

Пример среды VBA 1-5

Напишите код следующим образом:

Пример среды VBA 1-6

Мы позвонили в ‘Оболочка’ function для ввода команды для запуска программы (в нашем случае командной строки).

мы использовали «КомСпец», что означает «Спецификатор команды».

Теперь выйдите из VBE и нажмите кнопку команды. Мы отобразили командную строку.

Пример среды VBA 1-7

Пример #2

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

Шаги, чтобы сделать то же самое:

Заполните ячейки B2:H9 светло-оранжевым цветом.

Пример среды VBA 2

Создайте этикетку с помощью ‘Вставлять’ команда в «Управление» группа в «Разработчик».

Пример среды VBA 2-1

Пожалуйста, создайте показанные ниже ярлыки и отредактируйте свойства, например подпись, НазадЦвет, НазадСтиль, ГраницаСтиль, Тень.

Пример среды VBA 2-2

Создайте поле со списком следующим образом, используя Поле со списком команда (один из элементов управления ActiveX), доступная в Вставлять командовать Элементы управления группа в Разработчик.

Пример среды VBA 2-3

После создания Поле со списком в excelПоле со списком в ExcelПоле со списком в Excel — это тип инструмента проверки данных, который может создавать раскрывающийся список, в котором пользователь может выбирать из заранее определенного списка. Это элемент управления формой, который доступен на вкладке вставки на вкладке разработчика.читать далее следующим образом, мы можем изменить свойства.

Пример среды VBA 2-4

Мы добавим код для отображения списка в поле со списком с помощью Посмотреть код команду контекстного меню.

Пример среды VBA 2-5

Это код для «Выберите папку» Поле со списком.

Пример среды VBA 2-6

Это код для «Сортировать по» Поле со списком.

Пример среды VBA 2-7

Это код для «Выберите заказ» Поле со списком.

Пример среды VBA 2-8

Мы создадим список, содержащий все типы файлов, чтобы выбрать их, чтобы получить только эти типы файлов в результате. Чтобы сделать то же самое, выберите «Окно списка (элемент управления ActiveX)» от «Вставлять” в “Элементы управления” группа в “Разработчиквкладка

Пример среды VBA 2-9

Перетащите список, как показано ниже.

Пример среды VBA 2-10

Измените свойства списка следующим образом.

Пример среды VBA 2-11

Чтобы добавить типы файлов в список, используйте следующий код.

Напишите код в «Эта книга».

Код:

Private Sub Workbook_Open()

Dim ArrFileType(25) As Variant
ArrFileType(0) = "Microsoft Excel 97-2003 Worksheet(.xls)"
ArrFileType(1) = "Microsoft Office Excel Worksheet(.xlsx)"
ArrFileType(2) = "Microsoft Excel Macro-Enabled Worksheet(.xlsm)"
ArrFileType(3) = "Word Document 97-2003(.doc)"
ArrFileType(4) = "Word Document 2007-2010(.docx)"
ArrFileType(5) = "Text Document(.txt)"
ArrFileType(6) = "Adobe Acrobat Document(.pdf)"
ArrFileType(7) = "Compressed (zipped) Folder(.Zip)"
ArrFileType(8) = "WinRAR archive(.rar)"
ArrFileType(9) = "Configuration settings(.ini)"
ArrFileType(10) = "GIF File(.gif)"
ArrFileType(11) = "PNG File(.png)"
ArrFileType(12) = "JPG File(.jpg)"
ArrFileType(13) = "MP3 Format Sound(.mp3)"
ArrFileType(14) = "M3U File(.m3u)"
ArrFileType(15) = "Rich Text Format(.rtf)"
ArrFileType(16) = "MP4 Video(.mp4)"
ArrFileType(17) = "Video Clip(.avi)"
ArrFileType(18) = "Windows Media Player(.mkv)"
ArrFileType(19) = "SRT File(.srt)"
ArrFileType(20) = "PHP File(.php)"
ArrFileType(21) = "Firefox HTML Document(.htm, .html)"
ArrFileType(22) = "Cascading Style Sheet Document(.css)"
ArrFileType(23) = "JScript Script File(.js)"
ArrFileType(24) = "XML Document(.xml)"
ArrFileType(25) = "Windows Batch File(.bat)"

Sheet2.FileTypesListBox.List = ArrFileType

End Sub

Вставьте флажки, используя тот же «Вставлять” в “Элементы управления” группа в “Разработчик” и измените свойства для вставленных «Флажки» с помощью ‘Характеристики’ мощность доступна в той же группе после выбора объектов.

Пример среды VBA 2-12
Пример среды VBA 2-13

Вставьте командные кнопки с помощью ‘Вставлять’ команда, доступная в той же группе, и измените свойства, как подпись и другие вещи.

командные кнопки Пример 2-14

Мы сформировали всю структуру. Теперь нам нужно написать код.

Активировать «Режим дизайна», и щелкните правой кнопкой мыши на «Получить все сведения о файлах», чтобы выбрать «Посмотреть код” из контекстного меню, чтобы добавить код для переключателя.

Сначала мы объявим некоторые переменные в модуле.

переменная Пример 2-15

Ниже приведен код, добавленный в «Получить все сведения о файлах» кнопка.

Код:

Private Sub FetchFilesBtnCommandButton_Click()
iRow = 14
fPath = Environ("HOMEPATH") & "" & SelectTheFolderComboBox.Value
If fPath <> "" Then

Set FSO = New Scripting.FileSystemObject
If FSO.FolderExists(fPath) <> False Then
Set SourceFolder = FSO.GetFolder(fPath)

If Sheet2.IncludingSubFoldersCheckBox.Value = True Then
IsSubFolder = True
Else
IsSubFolder = False
If SourceFolder.Files.Count = 0 Then
MsgBox "No files exists in this Folder" & vbNewLine & vbNewLine & "Check your folder path and Try Again !!", vbInformation
Exit Sub
End If
End If

Call ClearResult

If FetchAllTypesOfFilesCheckBox.Value = True Then

Call ListFilesInFolder(SourceFolder, IsSubFolder)
Call ResultSorting(xlAscending, "C14", "D14", "E14")
Else

Call ListFilesInFolderXtn(SourceFolder, IsSubFolder)
Call ResultSorting(xlAscending, "C14", "D14", "E14")
End If

FilesCountLabel.Caption = iRow - 14

Else
MsgBox "Selected Path Does Not Exist !!" & vbNewLine & vbNewLine & "Select Correct One and Try Again !!", vbInformation
End If
Else
MsgBox "Folder Path Can not be Empty !!" & vbNewLine & vbNewLine & "", vbInformation
End If

End Sub

Определите ‘Очистить результат’ функция в модуле. Чтобы вставить модуль, выберите «Эта рабочая тетрадь» тогда ‘Вставлять’ а потом «Модуль».

Пример модуля 2-16

Напишите следующий код в модуле.

Код для ClearResult

Пример Clearresult 2-17

Есть еще такие подпрограммы, как ‘СписокФайловВПапке,’ ‘СписокФайловВПапкеXtn,’ «Сортировка результатов», мы определим все эти подпрограммы в модуле.

«Список файлов в папке»

Код:

Public Sub ListFilesInFolder(SourceFolder As Scripting.Folder, IncludeSubfolders As Boolean)

On Error Resume NextError Resume NextVBA On Error Resume Statement is an error-handling aspect used for ignoring the code line because of which the error occurred and continuing with the next line right after the code line with the error.read more
For Each FileItem In SourceFolder.Files

' display file properties
Cells(iRow, 2).Formula = iRow - 13
Cells(iRow, 3).Formula = FileItem.Name
Cells(iRow, 4).Formula = FileItem.Path
Cells(iRow, 5).Formula = Int(FileItem.Size / 1024)
Cells(iRow, 6).Formula = FileItem.Type
Cells(iRow, 7).Formula = FileItem.DateLastModified
Cells(iRow, 8).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:= _
FileItem.Path, TextToDisplay:="Click Here to Open"

'Cells(iRow, 8).Formula = "=HYPERLINK(""" & FileItem.Path & """,""" & "Click Here to Open" & """)"

iRow = iRow + 1 ' next row number
Next FileItem

If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder, True
Next SubFolder
End If

Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing

End Sub

«Список файлов в папке Xtn»

Public Sub ListFilesInFolderXtn(SourceFolder As Scripting.Folder, IncludeSubfolders As Boolean)

On Error Resume NextError Resume NextVBA On Error Resume Statement is an error-handling aspect used for ignoring the code line because of which the error occurred and continuing with the next line right after the code line with the error.read more
Dim FileArray As Variant

FileArray = Get_File_Type_Array

For Each FileItem In SourceFolder.Files

Call ReturnFileType(FileItem.Type, FileArray)

If IsFileTypeExists = True Then

Cells(iRow, 2).Formula = iRow - 13
Cells(iRow, 3).Formula = FileItem.Name
Cells(iRow, 4).Formula = FileItem.Path
Cells(iRow, 5).Formula = Int(FileItem.Size / 1024)
Cells(iRow, 6).Formula = FileItem.Type
Cells(iRow, 7).Formula = FileItem.DateLastModified

Cells(iRow, 8).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:= _
FileItem.Path, TextToDisplay:="Click Here to Open"

'Cells(iRow, 8).Formula = "=HYPERLINK(""" & FileItem.Path & """,""" & "Click Here to Open" & """)"

iRow = iRow + 1 ' next row number

End If
Next FileItem

If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolderXtn SubFolder, True
Next SubFolder
End If

Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing

End Sub

«Сортировка результатов»

Sub ResultSorting(xlSortOrder As String, sKey1 As String, sKey2 As String, sKey3 As String)
Range("C13").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select

Selection.Sort Key1:=Range(sKey1), Order1:=xlSortOrder, Key2:=Range(sKey2 _
), Order2:=xlAscending, Key3:=Range(sKey3), Order3:=xlSortOrder, Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal

Range("B14").Select
End Sub

В «Список файлов в папке Xtn» подпрограммы, мы вызвали функцию с именем ‘ВозвратФайлТип’ и «Получить массив типов файлов», нам нужно определить функции в том же модуле.

‘ВозвратФайлТип’

Код:

Public Function ReturnFileType(fileType As String, FileArray As Variant) As Boolean

Dim i As Integer

IsFileTypeExists = False

For i = 1 To UBound(FileArray) + 1

If FileArray(i - 1) = fileType Then

IsFileTypeExists = True
Exit For

Else
IsFileTypeExists = False
End If

Next

End Function

«Получить массив типов файлов»

Код:

Public Function Get_File_Type_Array() As Variant

Dim i, j, TotalSelected As Integer
Dim arrList() As String
TotalSelected = 0
For i = 0 To Sheet2.FileTypesListBox.ListCount - 1
If Sheet2.FileTypesListBox.Selected(i) = True Then
TotalSelected = TotalSelected + 1
End If
Next

ReDim arrList(0 To TotalSelected - 1) As String
j = 0
i = 0
For i = 0 To Sheet2.FileTypesListBox.ListCount - 1

If Sheet2.FileTypesListBox.Selected(i) = True Then
arrList(j) = Left(Sheet2.FileTypesListBox.List(i), InStr(1, Sheet2.FileTypesListBox.List(i), "(") - 1)
j = j + 1
End If

Next

Get_File_Type_Array = arrList

End Function

У нас есть командная кнопка с надписью «Экспорт в файл Excel», нам нужно написать код для этой кнопки следующим образом:

Экспорт в файл excel
Экспорт в файл Excel Пример 2-19

В модуле определите подпрограмму с именем ‘Экспорт в Excel.’

Код:

Sub Export_to_excel()
On Error GoTo err


Dim xlApp As New Excel.Application
Dim xlWB As New Workbook

Set xlWB = xlApp.Workbooks.Add
'xlWB.Add
xlApp.Visible = False

ThisWorkbook.Activate
Range("B13").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy

xlApp.Visible = True
xlWB.Activate
xlWB.Sheets("Sheet1").Select
xlWB.Sheets("Sheet1").Range("B2").PasteSpecial Paste:=xlPasteValues
xlWB.Sheets("Sheet1").Cells.Select
xlWB.Sheets("Sheet1").Cells.EntireColumn.AutoFit
xlWB.Sheets("Sheet1").Range("B2").Select
Exit Sub
err:
MsgBox ("Error Occured while exporting. Try again")

End Sub

У нас есть еще одна командная кнопка с надписью «Экспорт в текстовый файл». Мы напишем код для командной кнопки следующим образом:

Пример среды VBA 2-20
Экспорт в текстовый файл Пример 2-21

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

Щелкните правой кнопкой мыши на «Лист2 (Пример2)» Лист и выбери ‘Вставлять’ а потом «Пользовательская форма» из меню.

Пример пользовательской формы 2-22

Создайте пользовательскую форму с помощью инструментов из набора инструментов.

Дизайн пользовательской формы Пример 2-23

мы использовали ‘Ярлыки’ ‘Поле со списком,’ ‘Текстовое окно,’ и «Командные кнопки» для Пользовательская форма и изменили заголовок и имя для всех компонентов.

Во-первых командная кнопка (ОК), мы должны написать код следующим образом:

Код:

Private Sub CommandButton1_Click()
Dim iSeperator As String

If ComboBox1.Value = "Other" Then
iSeperator = TextBox1.Value
Else
iSeperator = ComboBox1.Value
End If

If iSeperator = "" Then
If MsgBox("Hello You have not selected any delimeter." & vbNewLine & vbNewLine & _
" It will be very difficult to read the Text file, without specific delimiter", vbYesNo) = vbYes Then

Call textfile(iSeperator)
Else

Exit Sub

End If

Else

Select CaseSelect CaseA select case is a substitute for writing down multiple IF statements in VBA. In the case of many IF statements, it becomes tedious and more complex, but in select case statements, we define the criteria as different cases and results.read more ComboBox1.ListIndex

Case 0: iSeperator = ","
Case 1: iSeperator = "|"
Case 2: iSeperator = "vbTab"
Case 3: iSeperator = ";"

End Select
Call textfile(iSeperator)
Unload Me
End If
End Sub

Мы позвонили в ‘текстовый файл’ в подпрограмме для командной кнопки, поэтому нам нужно определить ‘текстовый файл’ функция в модуле.

Код:

Sub textfile(iSeperator As String)
Dim iRow, iCol
Dim iLine, f
ThisWorkbook.Activate
Range("B13").Select
TotalRowNumber = Range(Selection, Selection.End(xlDown)).Count - 12
If iSeperator <> "vbTab" Then
Open ThisWorkbook.Path & "File1.txt" For Output As #1
Print #1, ""
Close #1
Open ThisWorkbook.Path & "File1.txt" For Append As #1
For iRow = 13 To TotalRowNumber
iLine = ""
For iCol = 2 To 7
iLine = iLine & iSeperator & Cells(iRow, iCol).Value
Next
Print #1, iLine
Next
Close #1
Else
Open ThisWorkbook.Path & "File1.txt" For Output As #1
Print #1, ""
Close #1
Open ThisWorkbook.Path & "File1.txt" For Append As #1
For iRow = 13 To TotalRowNumber
iLine = ""
For iCol = 2 To 7
iLine = iLine & vbTab & Cells(iRow, iCol).Value
Next
Print #1, iLine
Next
Close #1
End If
f = Shell("C:WINDOWSnotepad.exe " & ThisWorkbook.Path & "File1.txt", vbMaximizedFocus)
MsgBox "Your File is saved in " & ThisWorkbook.Path & "File1.txt"
End Sub

За командная кнопка 2 (Отмена), нам нужно написать следующий код. Дважды щелкните кнопку отмены, чтобы написать код.

командная кнопка 2 Пример 2-24

Для поля со списком для выбора спецификатора напишите следующий код.

Пример поля со списком 2-25

Для пользовательской формы напишите следующий код.

Пример пользовательской формы 2-26

Для «Выбрать все типы файлов» флажок, напишите следующий код.

Получить все типы файлов Пример 2-27
Пример выборки 2-28

Для ‘Список’ для типов файлов напишите следующий код.

список Пример 2-29
Поле списка типов файлов Пример 2-30

Для ‘ВыберитеЗаказ’ поле со списком, напишите следующий код.

Пример среды VBA 2-31

Код:

Private Sub SelectTheOrderComboBox_Change()
Select Case (SelectTheOrderComboBox.Value)
Case "Ascending"
If SortByComboBox.Value = "File Name" Then
Call ResultSorting(xlAscending, "C14", "E14", "G14")
End If
If SortByComboBox.Value = "File Type" Then
Call ResultSorting(xlAscending, "F14", "E14", "C14")
End If
If SortByComboBox.Value = "File Size" Then
Call ResultSorting(xlAscending, "E14", "C14", "G14")
End If
If SortByComboBox.Value = "Last Modified" Then
Call ResultSorting(xlAscending, "G14", "C14", "E14")
End If
Case "Descending"
If SortByComboBox.Value = "File Name" Then
Call ResultSorting(xlDescending, "C14", "E14", "G14")
End If
If SortByComboBox.Value = "File Type" Then
Call ResultSorting(xlDescending, "F14", "E14", "C14")
End If
If SortByComboBox.Value = "File Size" Then
Call ResultSorting(xlDescending, "E14", "C14", "G14")
End If
If SortByComboBox.Value = "Last Modified" Then
Call ResultSorting(xlDescending, "G14", "C14", "E14")
End If
Case Default
Exit Sub
End Select
End Sub

Для ‘Сортировать по’ поле со списком, мы напишем следующий код.

Пример среды VBA 2-32

Код:

Private Sub SortByComboBox_Change()
Select Case (SelectTheOrderComboBox.Value)
Case "Ascending"
If SortByComboBox.Value = "File Name" Then
Call ResultSorting(xlAscending, "C14", "E14", "G14")
End If
If SortByComboBox.Value = "File Type" Then
Call ResultSorting(xlAscending, "F14", "E14", "C14")
End If
If SortByComboBox.Value = "File Size" Then
Call ResultSorting(xlAscending, "E14", "C14", "G14")
End If
If SortByComboBox.Value = "Last Modified" Then
Call ResultSorting(xlAscending, "G14", "C14", "E14")
End If
Case "Descending"
If SortByComboBox.Value = "File Name" Then
Call ResultSorting(xlDescending, "C14", "E14", "G14")
End If
If SortByComboBox.Value = "File Type" Then
Call ResultSorting(xlDescending, "F14", "E14", "C14")
End If
If SortByComboBox.Value = "File Size" Then
Call ResultSorting(xlDescending, "E14", "C14", "G14")
End If
If SortByComboBox.Value = "Last Modified" Then
Call ResultSorting(xlDescending, "G14", "C14", "E14")
End If
Case Default
Exit Sub
End Select
End Sub

Теперь мы написали весь код. Теперь мы можем выбрать нужную папку и тип файла и узнать список файлов, которые мы можем отсортировать по «Имени файла», «Типу файла», «Размеру файла» или «Последним изменениям» и можем экспортировать список в Excel или текстовый файл.

Пример среды VBA 2-33

То, что нужно запомнить

Если значение, которое мы указываем для «инвестирование» аргумент отсутствует в таблице строк среды, функция ENVIRON возвращает строку нулевой длины.

УЗНАТЬ БОЛЬШЕ >>

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *