Připojte se k VBA | Podrobné příklady funkce připojení Excel VBA

Podobně jako to, co máme v listu jako funkce Zřetězit a příkaz &, který se používá ke spojení dvou nebo více než dvou řetězců dohromady, ve VBA používáme k tomu příkaz Připojit, ve Spojení ve VBA vezmeme zdroj dat v poli a podobně jako v zřetězení používáme oddělovač, abychom se k nim připojili.

Funkce Excel VBA JOIN

Jak název napovídá, funkce VBA JOIN se používá ke spojení řady podřetězců se zadaným oddělovačem. Pokud neurčíme žádný oddělovač, pak bude jako výchozí oddělovač použit 'mezera'. Dělá stejnou práci jako funkce Zřetězit v aplikaci Excel, kromě toho, že musíme zadat oddělovací znak pouze jednou, zatímco ve funkci Zřetězit musíme zadat oddělovací znak pokaždé mezi dvěma řetězci.

Syntaxe funkce je

Jak vidíme, funkce trvá dva argumenty a vrací řetězec. Argumenty jsou:

  1. SourceArray : Musíme určit nebo uvést odkaz na pole podřetězců, které se mají spojit.
  2. Oddělovač : Oddělovač se používá k oddělení každého z podřetězců při vytváření výsledného řetězce. Jelikož se jedná o volitelný argument, vynecháme-li jej, bude oddělovač nastaven na mezeru ““.

Funkce VBA SPLIT je přesně opačnou funkcí funkce VBA JOIN.

Příklady funkce VBA join

Níže jsou uvedeny příklady funkce spojení v aplikaci Excel VBA.

Tuto šablonu aplikace Excel VBA Join Excel si můžete stáhnout zde - Šablona Excel funkce VBA Join Function

Připojení VBA - příklad č. 1

Předpokládejme, že se chceme připojit k křestnímu jménu (Ramesh), prostřednímu (Kumar) a příjmení (Mishra).

Kroky by byly:

  • Nejprve musíme otevřít editor jazyka Visual Basic. To samé můžeme udělat kliknutím na příkaz „Visual Basic“ ve skupině „Kód“ na kartě „Vývojář“ Excel nebo můžeme použít klávesovou zkratku Excel Alt + F11 .

  • Vložte modul kliknutím pravým tlačítkem na „list 1“ a výběrem příkazu „Vložit“ z kontextového menu a poté výběrem „Modul“ pro vložení.

  • Vytvořte podprogram s názvem 'JoiningName'.

Kód:

 Sub JoiningName () End Sub 

  • Použijte funkci JOIN následujícím způsobem

Kód:

 Sub JoiningName () Range ("D2"). Value = join (Array ("Ramesh", "Kumar", "Mishra")) End Sub 

Vidíme, že jsme použili funkci ARRAY k poskytnutí SourceArray funkci JOIN a přeskočili jsme, abychom určili znak oddělovače, takže 'mezera' bude výchozím znakem. Zpracovaná hodnota funkce JOIN se zapíše do buňky D2, když tento kód provedeme pomocí klávesy F5 nebo ručně.

Připojení VBA - příklad č. 2

Předpokládejme, že chceme vytvořit různé soubory aplikace Excel s názvem položky obsahujícím prodej pouze pro tuto položku.

  • Otevřete editor jazyka pomocí klávesové zkratky Alt + F11.
  • Kliknutím pravým tlačítkem na list „List1“ (příklad 2) otevřete kontextovou nabídku a kliknutím na „Vložit“ vložíte modul „VBA“ do projektu VBA.

  • Definujte podprogram s názvem 'CreateItemSoldFiles'.

Kód:

 Sub CreateItemSoldFiles () End Sub 

  • Musíme nastavit odkaz na knihovnu objektů „Microsoft Scripting Runtime“ pomocí nabídky Nástroje -> Reference…, protože použijeme nějaký kód (objekty), který nebude fungovat, pokud tuto knihovnu objektů nezahrneme.

  • Nyní deklarujeme všechny proměnné.

Kód:

 Dim FSO jako nové skriptování. FileSystemObject

Výše uvedená proměnná FSO umožňuje přístup k VBA FileSystemObject. Po navázání můžeme použít funkce jako BuildPath, CopyFile, CreateTextFile atd.

  • Další příkaz vytvoří objekt TextStream. Prostřednictvím objektu TextStream můžeme číst nebo připojit k původnímu souboru.

Kód:

 Dim FSO as New Scripting.FileSystemObject Dim ts as Scripting.TextStream

  • Deklarujeme více proměnných. 'r' je pro držení řádků v rozsahu, 'fs' pro uložení konečného spojeného řetězce, 'cols' pro ukládání počtu sloupců v rozsahu, 'FolPath' pro uložení cesty ke složce, abychom mohli ukládat soubory ve složce a 'Items_Sold' pro ukládání různých názvů položek k vytvoření souboru s těmito názvy.

Kód:

 Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim It__old as String 

  • Abychom spočítali celkový počet sloupců v rozsahu, definujeme následující příkaz.

Kód:

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

Tento příkaz nejprve vybere aktuální oblast pro buňku A1 a poté spočítá celkový počet sloupců v aktuální oblasti.

  • Napíšeme následující příkazy pro přiřazení proměnné 'FolPath' cestu pomocí funkce VBA ENVIRON a operátoru zřetězení.

Kód:

FolPath = Environ ("UserProfile") & "\ Desktop \ Items_Sold" Pokud není FSO.FolderExists (FolPath), pak FSO.CreateFolder FolPath

Druhý příkaz vytvoří složku, pokud složka neexistuje ve stejném umístění.

  • Tento kód přiřadí hodnoty sloupce B jednu po druhé k „Items_Sold“ Použili jsme funkci „OFFSET“ k získání odkazu na buňku ve sloupci B, protože aktuálně vybraná buňka je ve sloupci A.

Kód:

Items_Sold = r.Offset (0, 1) .Value

  • Následující ohraničený příkaz otevře soubory s názvy uloženými v proměnné 'Items_Sold' jeden po druhém v připojovacím režimu (nové hodnoty budou připojeny konečně).

Kód:

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

K vytvoření názvů souborů Excel jsme použili operátor Zřetězit s proměnnými 'FolPath' a 'Items_Sold' a statickými hodnotami ("\" a ".xls").

  • Musíme mít na paměti, že funkce VBA JOIN přebírá jako SourceArray pouze jednorozměrné pole. Chcete-li převést řádky na jednorozměrné pole, musíme použít metodu Application.Transpose dvakrát.

Kód:

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

Použili jsme metodu Změnit velikost objektu rozsahu k změně velikosti rozsahu na šířku počtu sloupců v rozsahu.

Jako oddělovač jsme použili klíčové slovo „vbTab“, aby byly hodnoty vyplňovány v různých buňkách.

  • Protože jsme uložili zpracovanou hodnotu funkce JOIN do proměnné 'fs', zapíšeme hodnoty fs do nových řádků souborů Excel vytvořených VBA pro každý řádek v našem původním souboru od řádku číslo 2 do posledního řádku (v našem případě to je 350. řádek).

  • Před ukončením smyčky uzavřeme otevřený soubor. Kód by vypadal tak, jak je znázorněno na snímku obrazovky.

Celý kód jsme nyní napsali.

Kód:

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") & "\ Desktop \ Items_Sold" Pokud není FSO.FolderExists (FolPath), pak FSO.CreateFolder FolPath pro každé r v dosahu ("A2", rozsah ("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.Zavřít Další r Konec Sub

Nyní k provedení kódu stiskneme klávesu F5 a uvidíme, že byla vytvořena složka s názvem „Items_Sold“ pomocí kódu VBA na ploše.

Ve složce je vytvořeno 7 jedinečných souborů s názvy položek a v souborech můžeme zjistit podrobnosti pouze o této konkrétní položce.

Laptop.xls

Důležité informace o funkci VBA JOIN

  • SourceArray musí být jednorozměrné pole. Nemůžeme odkazovat na jednotlivou buňku, protože to vytvoří několik vícerozměrných polí.
  • Pokud zadáme řetězec s nulovou délkou („“) jako oddělovač, všechny položky v poli budou zřetězeny bez oddělovačů.

$config[zx-auto] not found$config[zx-overlay] not found