VBA Csatlakozás - Az Excel VBA csatlakozási funkció lépésenkénti példái

Hasonlóan ahhoz, amit a munkalapon összefűzünk és a & parancsot, amely két vagy több karaktersorozat összekapcsolására szolgál, a VBA-ban ehhez a Join parancsot használjuk, a VBA-ban való csatlakozásnál egy tömbben tároljuk az adatok forrását. és az összefűzéshez hasonlóan elválasztót használunk a csatlakozáshoz.

Excel VBA CSATLAKOZÁS funkció

Amint maga a neve is sugallja, a VBA JOIN függvényt használjuk arra, hogy összekapcsoljuk az alsorok tömbjét a megadott elválasztóval. Ha nem adunk meg elválasztót, akkor a „szóköz” lesz alapértelmezett elválasztó karakter. Ugyanazt a munkát végzi, mint az Összeillesztés funkció az Excelben, azzal a különbséggel, hogy csak egyszer kell meghatároznunk egy elválasztó karaktert, míg az Összecsatolás funkcióban minden egyes karakterlánc között minden alkalommal meg kell adnunk egy elválasztó karaktert.

A függvény szintaxisa az

Mint láthatjuk, a függvény két argumentumot vesz fel, és egy karakterláncot ad vissza. Az érvek a következők:

  1. SourceArray : Meg kell adnunk vagy hivatkoznunk kell az összekapcsolandó alszekciók tömbjére.
  2. Határoló : Az elválasztó az egyes alszalagok elválasztására szolgál, amikor létrehozza a kapott karakterláncot. Mivel ez egy opcionális argumentum, ha ezt elhagyjuk, a határoló szóköz lesz.

A VBA SPLIT függvény pontosan ellentétes funkciója a VBA JOIN funkciónak.

Példák a VBA Join funkcióra

Az alábbiakban bemutatjuk az Excel VBA egyesítési függvényének példáit.

VBA csatlakozás - 1. példa

Tegyük fel, hogy csatlakozni akarunk az első (Ramesh), a középső (Kumar) és a vezetéknévhez (Mishra).

A következő lépések lennének:

  • Először meg kell nyitnunk a visual basic szerkesztőt. Ugyanezt megtehetjük, ha a 'Fejlesztő' fül alatt található 'Kód' csoportban a 'Visual Basic' parancsra kattintunk, vagy használhatjuk az Alt + F11 Excel gyorsbillentyűt .
  • Helyezze be a modult úgy, hogy jobb gombbal kattint egy „1. lapra”, és a kontextus menüből válassza a „Beszúrás” parancsot, majd válassza a „Beszúrás” parancsot.
  • Hozzon létre egy 'JoiningName' nevű alprogramot.

Kód:

Sub JoiningName () Vége Sub
  • Használja a JOIN funkciót az alábbiak szerint

Kód:

Sub JoiningName () tartomány ("D2"). Érték = Join (tömb ("Ramesh", "Kumar", "Mishra")) Vége Sub

Láthatjuk, hogy az ARRAY függvényt használtuk a SourceArray biztosításához a JOIN függvényhez, és kihagytuk a határoló karakter megadását, így a „szóköz” lenne alapértelmezett karakter. A JOIN függvény feldolgozott értéke a D2 cellába kerül, amikor ezt a kódot az F5 billentyűvel vagy manuálisan végrehajtjuk.

VBA csatlakozás - 2. példa

Tegyük fel, hogy különféle excel fájlokat szeretnénk létrehozni, amelyeknek az elem neve csak az adott tétel értékesítését tartalmazza.

  • Nyissa meg a Visual Basic Editor alkalmazást az Alt + F11 parancsikon használatával.
  • Kattintson a jobb gombbal a 'Sheet1' (2. példa) 'lapra a kontextus menü megnyitásához, majd kattintson az' Insert 'gombra, ha be akar illeszteni egy VBA' modult 'a VBA projektbe.
  • Adjon meg egy „CreateItemSoldFiles” nevű alprogramot.

Kód:

Sub CreateItemSoldFiles () End Sub
  • Be kell állítanunk egy hivatkozást a „Microsoft Scripting Runtime” objektumkönyvtárra az Eszközök menü -> Referenciák … paranccsal, mivel néhány kódot (objektumot) fogunk használni, ami nem fog működni, ha nem vesszük fel ezt az objektumkönyvtárat.
  • Most deklaráljuk az összes változót.

Kód:

Dim FSO, mint új parancsfájl. FileSystemObject

A fenti FSO változó hozzáférést biztosít a VBA FileSystemObject fájlhoz. A kötés után olyan funkciókat használhatunk, mint a BuildPath, a CopyFile, a CreateTextFile stb.

  • A következő utasítás létrehoz egy TextStream objektumot. A TextStream objektumon keresztül olvashatunk vagy hozzáfűzhetjük az eredeti fájlt.

Kód:

Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream
  • We will declare more variables. ‘r’ is for holding rows in the range, ‘fs’ is for storing final joined string, ‘cols’ for storing numbers of columns in the range, ‘FolPath’ for storing the path of the folder so that we can save the files in the folder and ‘Items_Sold’ for storing various item names to create a file with these names.

Code:

Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String
  • To count the total number of columns in range, we will define the following statement.

Code:

cols = Range("A1").CurrentRegion.Columns.Count

This statement will first select the current region for cell A1 and then will count the total number of columns in the current region.

  • We will write the following statements for assigning the variable ‘FolPath’ a path using VBA ENVIRON function and Concatenation Operator.

Code:

FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath

The second statement will create the folder if the folder does not exist in the same location.

  • This code will assign the values of B column one by one to ‘Items_Sold’ We have used ‘OFFSET function’ to get the reference of cell in B column as the currently selected cell is in column A.

Code:

Items_Sold = r.Offset(0, 1).Value
  • The following bordered statement will open the files with names stored in ‘Items_Sold’ variable in one by one in appending mode (the new values will be appended at last).

Code:

Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True)

We have used Concatenate operator with variables ‘FolPath’ and ‘Items_Sold’ and static values (“” and”.xls”) to create file names for excel files.

  • We need to keep in mind that VBA JOIN function takes an only one-dimensional array as SourceArray To convert the rows into a one-dimensional array, we need to use Application.Transpose method two times.

Code:

fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab)

We have used the Resize method of range object to resize the range to the width of a number of columns in the range.

As delimiter, we have used ‘vbTab’ keyword so that values would be filled in different cells.

  • As we have stored the processed value of JOIN function into ‘fs’ variable, we will write the fs’s values into new lines of VBA created excel files for every row in our original file from row number 2 to the last row (in our case it is 350th row).
  • Before ending the loop, we will close the file opened. The code would be as shown in the screenshot.

We have written the full code now.

Code:

Sub CreateItemSoldFiles() Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range("A1").CurrentRegion.Columns.Count FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath For Each r In Range("A2", Range("A1").End(xlDown)) Items_Sold = r.Offset(0, 1).Value Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True) fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab) ts.WriteLine fs ts.Close Next r End Sub

Most a kód végrehajtásához nyomja meg az F5 billentyűt, és láthatjuk, hogy egy „Items_Sold” nevű mappa jött létre az asztalon lévő VBA kód segítségével.

A mappában 7 egyedi fájl van létrehozva az elem nevével, és a fájlokban csak az adott elemről tudhatunk meg részleteket.

Laptop.xls

Emlékezetes dolgok a VBA JOIN funkcióról

  • A SourceArray -nek egydimenziós tömbnek kell lennie. Nem hivatkozhatunk egyedi cellára, mivel ez több többdimenziós tömböt hoz létre.
  • Ha nulla hosszúságú karakterláncot („”) határozunk meg elválasztóként, akkor a tömb összes eleme összefűzve nincs elválasztó.

érdekes cikkek...