VBA keskkond | Kuidas kasutada VBA Excelis funktsiooni Environ?

Excel VBA ENVIRON (keskkond)

VBA ENVIRON funktsioon (tähistab KESKKOND ), mida saab liigitada Information Funktsioon kuna see funktsioon tagastab väärtuste operatsioonisüsteemi keskkonna muutujate kohta. Keskkonna (operatsioonisüsteemi) muutujad sisaldavad teavet kõigi kasutajate profiilide, kasutajanime, kasutajaprofiili, kasutaja kodukausta jne kohta. See funktsioon tagastab stringi väärtuse.

Süntaks 

Sellel funktsioonil on ainult üks argument, mis on ' Expression '. Saame täpsustada keskkonnamuutuja arvulist positsiooni (täisarvu), mis tähistab keskkonnamuutuja tabelit või muutuja nime ennast.

Kui määrame arvulise positsiooni, tagastab funktsioon keskkonnamuutuja ja selle väärtuse mõlemad võrdse märgiga.

Kui määrame muutuja nime, tagastab funktsioon ainsa väärtuse.

Väljund:

Kuidas kasutada keskkonnas funktsiooni VBA-s?

Selle VBA ENVIRON Exceli malli saate alla laadida siit - VBA ENVIRON Exceli mall

Näide 1

Avage käsuviip, kasutades funktsiooni ENVIRON VBA-s .

Samamoodi toimige järgmiselt.

Sisestage käsunupp, kasutades käsku „Lisa”, mis on saadaval vahekaardi „Arendaja” rühmas „Juhtnupud”, või kasutage kiirklahvi Excel ( Alt + F11 ).

Kui vahekaart Arendaja pole nähtav, siis tehke vahelehe nähtavaks tegemiseks järgmised sammud.

Klõpsake nupul „Fail” ja valige loendist „Valikud” .

Valige vasakpoolsest menüüst „Kohanda linti” , märkige vahekaardi „Arendaja” ruut ja klõpsake nuppu „OK” .

Nüüd on vahekaart Arendaja nähtav.

Kui jätkame käsunupu sisestamise ajal ALT-klahvi vajutamist , jäävad käsunupu servad koos lahtrite piiriga. Kontekstimenüü abil saate muuta sisestatud käsunupu atribuute, mille saame paremklõpsates nuppu 'Käsu' .

Atribuutide aken

VBA-koodi kirjutamiseks käsunupule peame valima käsunupu ja valima kontekstimenüüst 'Kuva kood' .

Kirjutage kood järgmiselt:

Oleme programmi käivitamiseks käsu sisestamiseks kutsunud funktsiooni „Shell” (meie puhul on see käsuviip).

Oleme kasutanud 'ComSpec' , mis tähistab 'Command Specifier' .

Nüüd väljuge VBE-st ja klõpsake käsunuppu. Oleme kuvanud käsuviiba.

Näide 2

Oletame, et soovime valitud kausta failinimed ja üksikasjad välja tõmmata järgmiselt.

Samamoodi toimige järgmiselt.

Lahtrid B2: H9 täitke heleoranži värviga.

Looge silt arendaja rühma 'Juhtnupud' käsuga 'Lisa '.

Looge allpool näidatud sildid ja muutke selliseid omadusi nagu pealdis , BackColor , BackStyle , BorderStyle , Shadow

Loo Combo Box järgmiselt kasutades Combo Box käsk (üks ActiveX Controls) saadaval Insert käsk Controls rühma Developer.

Pärast Excelis Combo Boxi loomist järgmiselt võime omadusi muuta.

Lisame koodiloendis kuvatava loendi koodi, kasutades kontekstimenüü käsku View Code .

See on kood „Valige kaust“ .

See on ComboBoxi sortimise kood .

See on kood „Valige tellimus“ ComboBoxile.

Loome loendikasti, mis sisaldab kõiki failitüüpe, et kasutaja saaks neid valida, et tulemusse saada ainult seda tüüpi failid. Sama toimingu tegemiseks valige vahekaardi „ Arendaja ” rühma „ Juhtnupud ” käsust „ Sisesta ” käsk „ Loendikast (ActiveX-i kontroll) ” .

Lohistage loendikasti, nagu allpool näidatud.

Muutke loendikasti atribuute järgmiselt.

Failitüüpide lisamiseks loendikasti kasutage järgmist koodi.

Sisestage kood jaotisesse „See töövihik”.

Kood:

Privaatne alamvihik_Open () Dim ArrFileType (25) Variantina ArrFileType (0) = "Microsoft Excel 97-2003 tööleht (.xls)" ArrFileType (1) = "Microsoft Office Exceli tööleht (.xlsx)" ArrFileType (2) = " Microsoft Exceli makrotoega tööleht (.xlsm) "ArrFileType (3) =" Wordi dokument 97-2003 (.doc) "ArrFileType (4) =" Wordi dokument 2007-2010 (.docx) "ArrFileType (5) =" Tekst Dokumendi (.txt) "ArrFileType (6) =" Adobe Acrobati dokumendi (.pdf) "ArrFileType (7) =" tihendatud (tihendatud) kausta (.Zip) "ArrFileType (8) =" WinRAR-i arhiiv (.rar) "ArrFileType (9) = "Konfiguratsiooniseaded (.ini)" ArrFileType (10) = "GIF-fail (.gif)" ArrFileType (11) = "PNG-fail (.png)" ArrFileType (12) = "JPG-fail (.jpg) "ArrFileType (13) =" MP3-vormingus heli (.mp3) "ArrFileType (14) = "M3U File (.m3u)" ArrFileType (15) = "Rich Text Format (.rtf)" ArrFileType (16) = "MP4 Video (.mp4)" ArrFileType (17) = "Videoklipp (. avi) "ArrFileType (18) =" Windows Media Player (.mkv) "ArrFileType (19) =" SRT-fail (.srt) "ArrFileType (20) =" PHP-fail (.php) "ArrFileType (21) =" Firefox HTML-dokument (.htm, .html) "ArrFileType (22) =" Kaskaadstiililehe dokument (.css) "ArrFileType (23) =" JScripti skriptifail (.js) "ArrFileType (24) =" XML-dokument (.xml ) "ArrFileType (25) =" Windows Batch File (.bat) "Sheet2.FileTypesListBox.List = ArrFileType End Subavi) "ArrFileType (18) =" Windows Media Player (.mkv) "ArrFileType (19) =" SRT-fail (.srt) "ArrFileType (20) =" PHP-fail (.php) "ArrFileType (21) =" Firefox HTML-dokument (.htm, .html) "ArrFileType (22) =" Kaskaadstiililehe dokument (.css) "ArrFileType (23) =" JScripti skriptifail (.js) "ArrFileType (24) =" XML-dokument (.xml ) "ArrFileType (25) =" Windows Batch File (.bat) "Sheet2.FileTypesListBox.List = ArrFileType End Subavi) "ArrFileType (18) =" Windows Media Player (.mkv) "ArrFileType (19) =" SRT-fail (.srt) "ArrFileType (20) =" PHP-fail (.php) "ArrFileType (21) =" Firefox HTML-dokument (.htm, .html) "ArrFileType (22) =" Kaskaadstiililehe dokument (.css) "ArrFileType (23) =" JScripti skriptifail (.js) "ArrFileType (24) =" XML-dokument (.xml ) "ArrFileType (25) =" Windows Batch File (.bat) "Sheet2.FileTypesListBox.List = ArrFileType End SubArrFileType (24) = "XML-dokument (.xml)" ArrFileType (25) = "Windows Batch File (.bat)" Leht2.FileTypesListBox.List = ArrFileType End SubArrFileType (24) = "XML-dokument (.xml)" ArrFileType (25) = "Windows Batch File (.bat)" Leht2.FileTypesListBox.List = ArrFileType End Sub

Sisestage märkeruudud sama käsu „ Insert “ abil vahekaardi „ Arendaja “ rühma „ Juhtnupud “ ja muutke pärast objektide valimist samas rühmas saadaval oleva käsu „Properties“ abil sisestatud „Checkboxes ” atribuudid .

Sisestage käsunupud, kasutades samas rühmas olevat käsku „Lisa”, ja muutke atribuute, näiteks pealdist ja muid atribuute.

Oleme moodustanud kogu struktuuri. Nüüd peame koodi kirjutama.

Aktiveerige kujundusrežiim ja paremklõpsake nupul „ Too kõik failide üksikasjad ”, et valida kontekstimenüüst „ Kuva kood ”, et lisada nupu kood.

Deklareerime moodulis kõigepealt mõne muutuja.

Allpool on kood, mis on lisatud nupule „ Too kõigi failide üksikasjad ”.

Kood:

Privaatne alamfetchFilesBtnCommandButton_Click () iRow = 14 fPath = Environ ("HOMEPATH") & "\" & SelectTheFolderComboBox.Value If fPath "" Siis määrake FSO = New Scripting.FileSystemObject Kui FSO.FolderExists (fPath) Vale. GetFolder (fPath) Kui Sheet2.IncludingSubFoldersCheckBox.Value = True, siis IsSubFolder = True Else IsSubFolder = False If SourceFolder.Files.Count = 0 Siis MsgBox "Selles kaustas pole faile" & vbNewLine & vbNewLine & "Kontrollige oma kausta teed ja proovige Jällegi !! ", vbInformation Exit Sub End If End, kui kõne ClearResult Kui FetchAllTypesOfFilesCheckBox.Value = True, siis Call ListFilesInFolder (SourceFolder, IsSubFolder) Kõne ResultSorting (xlAscending," C14 "," D14 "," E14 ") Muude kõnede loendifailid ,IsSubFolder) Kõne ResultSorting (xlAscending, "C14", "D14", "E14") Lõpeb, kui FilesCountLabel.Caption = iRow - 14 muud MsgBox "Valitud teed ei eksisteeri !!" & vbNewLine & vbNewLine & "Valige õige ja proovige uuesti !!", vbInformation End, kui veel MsgBox "Kausta tee ei saa olla tühi !!" & vbNewLine & vbNewLine & "", vbInformation End If End SubvbInformation End If End SubvbInformation End If End Sub

Määrake moodulis funktsioon „ClearResult” . Mooduli sisestamiseks valige 'ThisWorkbook', seejärel 'Insert' ja seejärel 'Module'.

Kirjuta moodulisse järgmine kood.

Kood ClearResultile

On veel alamprogramme nagu 'ListFilesInFolder' , 'ListFilesInFolderXtn' , 'ResultSorting' , kõik need alamrutiinid määratletakse moodulis.

'ListFilesInFolder'

Kood:

Avalik alamloendFilesInFolder (SourceFolder as Scripting.Folder, IncludeSubfolders as Boolean) On Error Jätkake Järgmine iga FileItem puhul SourceFolder.Files kuvatakse faili omadused Lahtrid (iRow, 2). Formula = iRow - 13 lahtrit (iRow, 3). Formula = Lahtrid FileItem.Name (iRow, 4). Formula = FileItem.Path Cells (iRow, 5). Formula = Int (FileItem.Size / 1024) lahtrid (iRow, 6). Formula = FileItem.Type lahtrid (iRow, 7) .Formula = FileItem.DateLastModified Cells (iRow, 8). Valige Selection.Hyperlinks.Add Anchor: = Selection, Address: = _ FileItem.Path, TextToDisplay: = "Klõpsake siin, et avada" lahtrid (iRow, 8). = "= HYPERLINK (" "" & FileItem.Path & "" "," "" & "Klõpsake siin, et avada" & "" ")" iRow = iRow + 1 'järgmise rea number Järgmine FileItem Kui IncludeSubfolders siis iga alamkausta korral SourceFolder.SubFolders ListFilesInFolder alamkaust, True Next alamkausta lõpp, kui Set FileItem = pole midagi määratud SourceFolder = pole midagi määratud FSO = pole midagi alamkausta

'ListFilesInFolderXtn'

Public Sub ListFilesInFolderXtn (SourceFolder as Scripting.Folder, IncludeSubfolders as Boolean) On Error Jätka järgmise Dim FileArray variandina FileArray = Get_File_Type_Array igale FileItemile SourceFolder.Files Helistage ReturnFileType (FileItem.Type, FileArry) If Is 2). Formul = iRow - 13 lahtrit (iRow, 3). Formula = FileItem.Name lahtrid (iRow, 4). Formula = FileItem.Path Cells (iRow, 5). Formula = Int (FileItem.Size / 1024) lahtrid [iRow, 6]. Formula = FileItem.Type lahtrid (iRow, 7). Formula = FileItem.DateLastModified Cells (iRow, 8). Valige Selection.Hyperlinks.Add Anchor: = Selection, Address: = _ FileItem.Path, TextToDisplay : = "Lahtrite avamiseks klõpsake siin (iRow, 8) .Formula =" = HYPERLINK ("" "& FileItem.Path &" "", "" "&" Klõpsake avamiseks siin "&"" ")" iRow = iRow + 1 'järgmise rea number Lõpeta, kui Järgmine FileItem Kui Sisesta alamkaustad, siis iga alamkausta korral SourceFolder.SubFolders ListFilesInFolderXtn alamkaust, Tõsi Järgmine alamkataloogi lõpp, kui Set FileItem = Midagi pole määratud SourceFolder = Midagi ei määrata FSO = Midagi lõpu alam

'ResultSorting'

 Alatulemuste sortimine (xlSortOrder stringina, sKey1 stringina, sKey2 stringina, sKey3 stringina) Vahemik ("C13"). Valige vahemik (Selection, Selection.End (xlDown)). Valige Range (Selection, Selection.End (xlToRight) ). Valige Selection.Sort Key1: = Range (sKey1), Order1: = xlSortOrder, Key2: = Range (sKey2 _), Order2: = xlAscending, Key3: = Range (sKey3), Order3: = xlSortOrder, Header _: = xlGuess, OrderCustom: = 1, MatchCase: = Vale, Orientatsioon: = xlTopToBottom _, DataOption1: = xlSortNormal, DataOption2: = xlSortNormal, DataOption3: = _ xlSortNormal Range ("B14"). Valige End Sub Sub 

In "ListFilesInFolderXtn" alamprogrammi oleme nimetatakse funktsiooni nimega "ReturnFileType" ja "GetFileTypeArray" , peame määratlema funktsioonide samas moodulis.

'ReturnFileType'

Kood:

 Avaliku funktsiooni ReturnFileType (fileType stringina, FileArray Variantina) tõeväärtuse dimensioonina i täisarvuna IsFileTypeExists = Vale i = 1 kuni tagasi (FileArray) + 1 Kui FileArray (i - 1) = fileType siis IsFileTypeExists = True Exit For Else Is Isile Vale lõpu kui järgmise lõpu funktsioon 

'GetFileTypeArray'

Kood:

Avalik funktsioon Get_File_Type_Array () Variandina Dim i, j, TotalSelected Integer Dim arrList () Stringina TotalSelected = 0 i jaoks = 0 Sheet2.FileTypesListBox.ListCount - 1 Kui Sheet2.FileTypesListBox.Selected (i) = True Then TotalSel TotalSelected + 1 End If Next ReDim arrList (0 to TotalSelected - 1) stringina j = 0 i = 0 i = 0 jaoks Sheet2.FileTypesListBox.ListCount - 1 if Sheet2.FileTypesListBox.Selected (i) = True Then arrList (j ) = Vasak (Sheet2.FileTypesListBox.List (i), InStr (1, Sheet2.FileTypesListBox.List (i), "(") - 1) j = j + 1 End If Next Järgmine Get_File_Type_Array = arrList End Funktsioon 

Meil on käsunupp pealkirjaga „Eksport Exceli faili” , peame selle nupu koodi kirjutama järgmiselt:

Moodulis määrake alamprogramm nimega "Export_to_excel" .

Kood:

Sub Export_to_excel () Vea korral GoTo eksimine Dim xlApp kui uus Excel.Application Dim xlWB uue töövihikuna Määra xlWB = xlApp.Workbooks.Add 'xlWB.Add xlApp.Visible = False ThisWorkbook.Activate Range ("B13"). Valige vahemik ( Selection, Selection.End (xlDown)). Valige vahemik (Selection, Selection.End (xlToRight)). Valige Selection.Copy xlApp.Visible = True xlWB.Activate xlWB.Sheets ("Sheet1"). Valige xlWB.Sheets (" Sheet1 "). Range (" B2 "). PasteSpecial Paste: = xlPasteValues ​​xlWB.Sheets (" Sheet1 "). Cells.Valige xlWB.Sheets (" Sheet1 "). Cells.EntireColumn.AutoFit xlWB.Sheets (" Sheet1 ") Vahemik ("B2"). Valige Exit Sub err: MsgBox ("Eksportimisel ilmnes viga. Proovige uuesti") End Sub

Meil on veel üks käsunupp pealkirjaga „Ekspordi tekstifaili” . Käsunupu koodi kirjutame järgmiselt:

Selles koodis näeme, et meil on kasutajavorm, mille peame kujundama järgmiste sammudega:

Paremklõpsake lehel 'Sheet2 (Example2)' ja valige menüüst 'Insert' ja seejärel 'UserForm' .

Kujundage UserForm tööriistakasti tööriistade abil.

Oleme kasutanud "sildid" , "Combo Box" , "Text Box" ja "Käsunupud" jaoks Userform ja muutunud pealdis ja nimi kõik osad.

Esimese käsunupu (OK) jaoks peame koodi kirjutama järgmiselt:

Kood:

Private Sub CommandButton1_Click () Dim iSeperator stringina, kui ComboBox1.Value = "Muu", siis iSeperator = TextBox1.Value Muu iSeperator = ComboBox1.Value End If Kui iSeperator = "" Siis If MsgBox ("Tere, te pole ühtegi eraldajat valinud." & vbNewLine & vbNewLine & _ "Tekstifaili lugemine ilma konkreetse eraldajata on väga keeruline", vbYesNo) = vbYes Siis helistage tekstifaili (iSeperator) muuks Exit Sub End kui muul juhul valige ComboBox1.ListIndex Case 0: iSeperator = " , "Juhtum 1: iSeperator =" | " Juhtum 2: iSeperator = "vbTab" Juhtum 3: iSeperator = ";" Lõpeta Valige kõne tekstifail (iSeperator) Tühjenda mind Lõpeta, kui Lõpp alam

Alamprogrammis oleme käsunupu jaoks kutsunud funktsiooni "textfile", mistõttu peame moodulis määratlema funktsiooni "textfile" .

Kood:

Alamtekstifail (iSeperator stringina) Dim iRow, iCol Dim iLine, f ThisWorkbook.Activate Range ("B13"). Valige TotalRowNumber = Range (Selection, Selection.End (xlDown)). Loend - 12 If iSeperator "vbTab", siis avage ThisWorkbook.Path & "\ File1.txt" väljundina kui # 1 Prindi nr 1, "" Sule # 1 avage seeWorkbook.Path & "\ File1.txt" Kui soovite lisada kui # 1 iRow = 13 = TotalRowNumber iLine = "" ICol = 2 kuni 7 korral iLine = iLine & iSeperator & Cells (iRow, iCol). Väärtus Järgmine trükk nr 1, iLine Järgmine sulgemine # 1 Veel avage see tööraamat.Path & "\ File1.txt" väljundina kui # 1 Prindi nr 1 , "" Sule # 1 avage see tööraamat.Path & "\ File1.txt" Kui soovite lisada kui # 1 iRow = 13 to TotalRowNumber iLine = "" iCol = 2 kuni 7 iLine = iLine & vbTab & Cells (iRow, iCol) .Väärtus Järgmine Prindi nr 1, iLine Järgmine Sule # 1 Lõpp Kui f = Shell ("C: \ WINDOWS \ notepad.exe" & ThisWorkbook.Path & "\ File1.txt", vbMaximizedFocus) MsgBox "Teie fail on salvestatud kausta & ThisWorkbook.Path & "\ File1.txt" End Sub

Sest käsk nuppu 2 (Tühista) , peame kirjutada järgmine kood. Topeltklõpsake koodi kirjutamiseks nuppu Tühista.

Spetsifikaatori valimiseks mõeldud kombinatsioonikasti jaoks kirjutage järgmine kood.

Kasutajavormi jaoks kirjutage järgmine kood.

Sest "Tõmba kõik tüüpi faile" ruut, kirjuta järgmine kood.

Sest "ListBox" faili tüüpi, kirjuta järgmine kood.

Sest "SelectTheOrder" liitkastile kirjutada järgmine kood.

Kood:

Privaatne alamvalimineTheOrderComboBox_Change () Valige juhtum (SelectTheOrderComboBox.Value) Juhtum "Tõusev" If SortByComboBox.Value = "Faili nimi" Siis helistage ResultSorting (xlAscending, "C14", "E14", "G14") Lõpeta, kui SortByCo "Failitüüp" ja seejärel helistage ResultSorting (xlAscending, "F14", "E14", "C14") Lõpeta, kui If SortByComboBox.Value = "Faili suurus", siis helistage ResultSorting (xlAscending, "E14", "C14", "G14" ) Lõpeta, kui SortByComboBox.Value = "Viimati muudetud", siis helistage ResultSorting (xlAscending, "G14", "C14", "E14") Lõpeta juhul, kui juhtum "Kahanev" If SortByComboBox.Value = "Faili nimi", siis helistage ResultSorting (xlDescending) , "C14", "E14", "G14") Lõpeta, kui SortByComboBox.Value = "Failitüüp", siis helistage ResultSorting (xlDescending, "F14", "E14", "C14") Lõpeta, kui If SortByComboBox.Value = "Faili suurus", siis helistage ResultSorting (xlDescending, "E14") , "C14", "G14") Lõpeta, kui SortByComboBox.Value = "Viimati muudetud", siis helistage ResultSorting (xlDescending, "G14", "C14", "E14") Lõpeta, kui juhtum Vaikimisi Välju Alam Lõpp Valige Lõpeta alamSeejärel helistage ResultSorting (xlDescending, "G14", "C14", "E14") Lõpeta, kui juhtum Vaikimisi Välju Alam Lõpp Valige Lõpeta alamSeejärel helistage ResultSorting (xlDescending, "G14", "C14", "E14") Lõpeta, kui juhtum Vaikimisi Välju Alam Lõpp Valige Lõpeta alam

Sest "Sortby" liitkastile me kirjutada järgmine kood.

Kood:

Private Sub SortByComboBox_Change () Valige juhtum (SelectTheOrderComboBox.Value) Juhtum "Tõusev" If SortByComboBox.Value = "Faili nimi" Siis helistage ResultSorting (xlAscending, "C14", "E14", "G14") Lõpeta, kui SortByCombo "Failitüüp" ja seejärel helistage ResultSorting (xlAscending, "F14", "E14", "C14") Lõpeta, kui If SortByComboBox.Value = "Faili suurus", siis helistage ResultSorting (xlAscending, "E14", "C14", "G14" ) Lõpeta, kui SortByComboBox.Value = "Viimati muudetud", siis helistage ResultSorting (xlAscending, "G14", "C14", "E14") Lõpeta juhul, kui juhtum "Kahanev" If SortByComboBox.Value = "Faili nimi", siis helistage ResultSorting (xlDescending) , "C14", "E14", "G14") Lõpeta, kui SortByComboBox.Value = "Failitüüp", siis helistage ResultSorting (xlDescending, "F14", "E14", "C14") Lõpeta, kui If SortByComboBox.Value = "Faili suurus", siis helistage ResultSorting (xlDescending, "E14") , "C14", "G14") Lõpeta, kui SortByComboBox.Value = "Viimati muudetud", siis helistage ResultSorting (xlDescending, "G14", "C14", "E14") Lõpeta, kui juhtum Vaikimisi Välju Alam Lõpp Valige Lõpeta alam"G14", "C14", "E14") Lõpp, kui juhtumi vaikeväärtus Välju Alamosa Valige Lõpeta alam"G14", "C14", "E14") Lõpp, kui juhtumi vaikeväärtus Välju Alamosa Valige Lõpp alam

Nüüd oleme kirjutanud kogu koodi. Nüüd saame valida soovitud kausta ja failitüübi ning leida failide loendi, mille saame sortida „Failinime”, „Failitüübi”, „Faili suuruse” või „Viimati muudetud” järgi ja saame loendi eksportida Exceli või tekstifail.

Asjad, mida meeles pidada

Kui väärtust, mille määrame argumendi 'envstring' jaoks, pole keskkonnast stringitabelis, tagastab funktsioon ENVIRON nulli pikkuse stringi.