---
title: "Ako poslať Excel kontakty do Brevo pomocou VBA makra (a alternatíva s Office Scripts)"
description: "Funkčné VBA makro, ktoré pošle kontakty z Excel hárka do API Brevo jedným klikom. Plus kedy namiesto toho použiť Office Scripts + Power Automate, a kompromisy oproti riešeniu s Google Apps Script."
url: https://tajo.io/sk/blog/import-excel-contacts-to-brevo-with-vba-macro/
markdown: https://tajo.io/sk/blog/import-excel-contacts-to-brevo-with-vba-macro.md
lang: sk-SK
author: "Set Noa"
author_url: https://tajo.io/sk/set-noa/
published: 2026-04-30
updated: 2026-05-22
alternates: {en-US: /blog/import-excel-contacts-to-brevo-with-vba-macro.md, bg-BG: /bg/blog/import-excel-contacts-to-brevo-with-vba-macro.md, cs-CZ: /cz/blog/import-excel-contacts-to-brevo-with-vba-macro.md, de-DE: /de/blog/import-excel-contacts-to-brevo-with-vba-macro.md, da-DK: /dk/blog/import-excel-contacts-to-brevo-with-vba-macro.md, es-ES: /es/blog/import-excel-contacts-to-brevo-with-vba-macro.md, fr-FR: /fr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, el-GR: /gr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, hi-IN: /hi/blog/import-excel-contacts-to-brevo-with-vba-macro.md, id-ID: /in/blog/import-excel-contacts-to-brevo-with-vba-macro.md, hr-HR: /hr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, hu-HU: /hu/blog/import-excel-contacts-to-brevo-with-vba-macro.md, it-IT: /it/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ja-JP: /jp/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ko-KR: /kr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ar-SA: /ar/blog/import-excel-contacts-to-brevo-with-vba-macro.md, nl-NL: /nl/blog/import-excel-contacts-to-brevo-with-vba-macro.md, no-NO: /no/blog/import-excel-contacts-to-brevo-with-vba-macro.md, pl-PL: /pl/blog/import-excel-contacts-to-brevo-with-vba-macro.md, pt-BR: /pt/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ro-RO: /ro/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ru-RU: /ru/blog/import-excel-contacts-to-brevo-with-vba-macro.md, sv-SE: /se/blog/import-excel-contacts-to-brevo-with-vba-macro.md, zh-CN: /zh-cn/blog/import-excel-contacts-to-brevo-with-vba-macro.md, sl-SI: /sl/blog/import-excel-contacts-to-brevo-with-vba-macro.md, sr-Latn-RS: /sr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, th-TH: /th/blog/import-excel-contacts-to-brevo-with-vba-macro.md, tr-TR: /tr/blog/import-excel-contacts-to-brevo-with-vba-macro.md, ur-PK: /ur/blog/import-excel-contacts-to-brevo-with-vba-macro.md, vi-VN: /vi/blog/import-excel-contacts-to-brevo-with-vba-macro.md}
---

[Synchronizácia dát](https://tajo.io/sk/blog/?category=data-sync)

# Ako poslať Excel kontakty do Brevo pomocou VBA makra (a alternatíva s Office Scripts)

Funkčné VBA makro, ktoré pošle kontakty z Excel hárka do API Brevo jedným klikom. Plus kedy namiesto toho použiť Office Scripts + Power Automate, a kompromisy oproti riešeniu s Google Apps Script.

excel to brevo

Ako poslať Excel kontakty do Brevo pomocou VBA makra?

Dve rozumné cesty: VBA makro vo vnútri .xlsm (najlepšie pre manuálnu synchronizáciu jedným klikom z desktopového Excelu, žiadne licencovanie) alebo Office Scripts + Power Automate (najlepšie pre plánovanú cloudovú synchronizáciu, ale potrebuje M365 + Power Automate Premium pre HTTP). Obe smerujú na POST /v3/contacts/import v Brevo. Plný kód nižšie pre obe.

[Zistiť viac](https://tajo.io/sk/blog/import-excel-contacts-to-brevo-with-vba-macro/#%C4%8Do-makro-rob%C3%AD)

| Zdrojové pole | Cieľové pole | Ukážková hodnota |
| --- | --- | --- |
| `email` | `EMAIL` | `alex@example.com` |
| `firstName` | `FIRSTNAME` | `Alex` |
| `company` | `COMPANY` | `Example Co` |

Máte kontakty v Exceli a chcete ich mať v Brevo. Rýchla a špinavá odpoveď je uložiť súbor ako `.csv` a importovať ho, čo je v poriadku raz. Pre čokoľvek, čo robíte opakovane (týždenné odovzdanie obchodu, zošit, ktorý váš tím aktualizuje denne, partnerský zoznam, ktorý sa obnovuje), chcete tlačidlo priamo v Exceli, ktoré urobí synchronizáciu.

Táto príručka pokrýva dve cesty, ktoré pre to skutočne dávajú zmysel:

1. **VBA makro vložené v zošite.** Žiadne licencovanie, žiadny cloud, funguje offline, beží v okamihu, keď používateľ klikne na tlačidlo. Správna odpoveď pre približne 80 % prípadov „Excel do Brevo”.
2. **Office Scripts + Power Automate.** TypeScript namiesto VBA, beží v cloude, podporuje plánované triggery. Správna odpoveď, ak zošit žije v OneDrive/SharePoint a chcete bezobslužnú synchronizáciu, ale buďte si vedomí licencovania Power Automate.

Ak hľadáte ekvivalent pre Google Sheets, pozrite si [sprievodný článok o Apps Script](https://tajo.io/sk/blog/import-google-sheet-contacts-to-brevo-apps-script). A ak chcete len jednorazový CSV import zo skriptu na vašom laptope, [príručka CSV importu](https://tajo.io/sk/blog/import-csv-contacts-to-brevo-with-a-script) má verzie v Pythone, Node.js a cURL.

## Čo makro robí

Keď používateľ klikne na tlačidlo „Sync to Brevo” na hárku:

1. Prečíta každý riadok z aktívneho pracovného hárka (najprv riadok hlavičky, jeden kontakt na riadok).
2. Vybuduje JSON pole tvarované pre parameter `jsonBody` Brevo.
3. Pošle to na `https://api.brevo.com/v3/contacts/import` s API kľúčom uloženým v zošite.
4. Zobrazí okno správy s výsledkom.

To je všetko. Asi 120 riadkov VBA. Nižšie je celý funkčný modul.

## Layout hárka, ktorý makro očakáva

| email | firstName | lastName | company | city |
| --- | --- | --- | --- | --- |
| [jane@example.com](mailto:jane@example.com) | Jane | Doe | Acme | Berlin |
| [john@example.com](mailto:john@example.com) | John | Smith | Globex | Paris |

`email` je povinný. Každý ďalší stĺpec sa stáva atribútom kontaktu Brevo, namapovaným cez hlavičku stĺpca (na veľké písmená) na názov atribútu. Takže `firstName` sa stane `FIRSTNAME`, `company` sa stane `COMPANY`. Vlastné atribúty (čokoľvek nad rámec štandardnej sady) musia najprv existovať vo vašom účte Brevo. Definujte ich v **Contacts → Settings → Contact attributes**.

## Krok 1: otvorte VBA editor

V Exceli: stlačte `Alt + F11`. Otvorí sa VBA editor. V paneli **Project** vľavo kliknite pravým tlačidlom na váš zošit a vyberte **Insert → Module**. Objaví sa prázdny `Module1`.

## Krok 2: vložte celé makro

Nahraďte obsah `Module1` týmto:

```vba
' ===========================================================================
' Brevo contact sync for Excel
' Reads the active sheet's rows and POSTs them to Brevo's import API.
' ===========================================================================
Option Explicit

Private Const BREVO_API_BASE As String = "https://api.brevo.com/v3"
Private Const BREVO_LIST_ID As Long = 42       ' <- your Brevo list ID
Private Const BATCH_SIZE As Long = 1000

' --- Public entry points (the ones you assign to ribbon buttons) -----------

Public Sub SyncSheetToBrevo()
    Dim apiKey As String
    apiKey = GetApiKey()
    If apiKey = "" Then
        MsgBox "No API key configured. Run ConfigureApiKey first.", _
               vbExclamation, "Brevo Sync"
        Exit Sub
    End If

    Dim ws As Worksheet
    Set ws = ActiveSheet

    Dim emailCol As Long
    emailCol = FindEmailColumn(ws)
    If emailCol = 0 Then
        MsgBox "Sheet must have an 'email' column in row 1.", _
               vbExclamation, "Brevo Sync"
        Exit Sub
    End If

    Dim lastRow As Long, lastCol As Long
    lastRow = ws.Cells(ws.Rows.Count, emailCol).End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    If lastRow < 2 Then
        MsgBox "No contact rows found.", vbInformation, "Brevo Sync"
        Exit Sub
    End If

    Dim contacts As Collection
    Set contacts = New Collection

    Dim r As Long, c As Long
    For r = 2 To lastRow
        Dim email As String
        email = LCase(Trim(CStr(ws.Cells(r, emailCol).Value)))
        If email <> "" And InStr(email, "@") > 0 Then
            Dim json As String
            json = "{""email"":""" & EscapeJson(email) & """,""attributes"":{"

            Dim attrFirst As Boolean
            attrFirst = True
            For c = 1 To lastCol
                If c <> emailCol Then
                    Dim val As String
                    val = CStr(ws.Cells(r, c).Value)
                    If val <> "" Then
                        If Not attrFirst Then json = json & ","
                        Dim attrName As String
                        attrName = UCase(Trim(CStr(ws.Cells(1, c).Value)))
                        json = json & """" & attrName & """:""" & EscapeJson(val) & """"
                        attrFirst = False
                    End If
                End If
            Next c

            json = json & "}}"
            contacts.Add json
        End If
    Next r

    If contacts.Count = 0 Then
        MsgBox "No valid contact rows found.", vbInformation, "Brevo Sync"
        Exit Sub
    End If

    Dim totalSent As Long
    Dim batchNum As Long
    Dim okCount As Long, failCount As Long
    Dim batchStart As Long

    For batchStart = 1 To contacts.Count Step BATCH_SIZE
        batchNum = batchNum + 1
        Dim batchEnd As Long
        batchEnd = batchStart + BATCH_SIZE - 1
        If batchEnd > contacts.Count Then batchEnd = contacts.Count

        Dim payload As String
        payload = "{""jsonBody"":["
        Dim i As Long
        For i = batchStart To batchEnd
            If i > batchStart Then payload = payload & ","
            payload = payload & contacts(i)
        Next i
        payload = payload & "],""listIds"":[" & BREVO_LIST_ID & _
                  "],""updateExistingContacts"":true,""emptyContactsAttributes"":false}"

        Dim ok As Boolean
        ok = PostToBrevo(apiKey, payload)
        If ok Then
            okCount = okCount + 1
            totalSent = totalSent + (batchEnd - batchStart + 1)
        Else
            failCount = failCount + 1
        End If
    Next batchStart

    MsgBox "Sent " & totalSent & " contact(s) in " & batchNum & " batch(es)." _
           & vbCrLf & "Successful batches: " & okCount _
           & vbCrLf & "Failed batches: " & failCount, _
           vbInformation, "Brevo Sync"
End Sub

Public Sub ConfigureApiKey()
    Dim key As String
    key = InputBox("Paste your Brevo API key (xkeysib-...):", "Brevo API Key")
    If key = "" Then Exit Sub
    key = Trim(key)
    If Left(key, 8) <> "xkeysib-" Then
        MsgBox "That doesn't look like a Brevo API key (should start with xkeysib-).", _
               vbExclamation, "Brevo API Key"
        Exit Sub
    End If

    On Error Resume Next
    ThisWorkbook.CustomDocumentProperties("BrevoApiKey").Delete
    On Error GoTo 0

    ThisWorkbook.CustomDocumentProperties.Add _
        Name:="BrevoApiKey", _
        LinkToContent:=False, _
        Type:=msoPropertyTypeString, _
        Value:=key

    ThisWorkbook.Save
    MsgBox "API key saved inside the workbook.", vbInformation, "Brevo API Key"
End Sub

' --- Private helpers --------------------------------------------------------

Private Function GetApiKey() As String
    On Error Resume Next
    GetApiKey = ThisWorkbook.CustomDocumentProperties("BrevoApiKey").Value
    On Error GoTo 0
End Function

Private Function FindEmailColumn(ws As Worksheet) As Long
    Dim lastCol As Long, c As Long
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    For c = 1 To lastCol
        If LCase(Trim(CStr(ws.Cells(1, c).Value))) = "email" Then
            FindEmailColumn = c
            Exit Function
        End If
    Next c
    FindEmailColumn = 0
End Function

Private Function PostToBrevo(apiKey As String, payload As String) As Boolean
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", BREVO_API_BASE & "/contacts/import", False
    http.SetRequestHeader "api-key", apiKey
    http.SetRequestHeader "Content-Type", "application/json"
    http.SetRequestHeader "Accept", "application/json"
    http.Send payload
    PostToBrevo = (http.Status = 202)
    If Not PostToBrevo Then
        Debug.Print "Brevo error " & http.Status & ": " & http.responseText
    End If
End Function

Private Function EscapeJson(s As String) As String
    Dim r As String
    r = Replace(s, "\", "\\")
    r = Replace(r, """", "\""")
    r = Replace(r, vbCrLf, "\n")
    r = Replace(r, vbLf, "\n")
    r = Replace(r, vbCr, "\n")
    r = Replace(r, vbTab, "\t")
    EscapeJson = r
End Function
```

## Krok 3: uložte zošit ako .xlsm

VBA makrá pretrvávajú iba v zošitoch s povolenými makrami. Uložiť ako, vyberte **Excel Macro-Enabled Workbook (.xlsm)**. Bežný formát `.xlsx` makrá potichu odstráni. Mnoho ľudí takto stráca kód prvýkrát.

## Krok 4: nakonfigurujte svoj API kľúč

Spustite `ConfigureApiKey` raz. Buď:

- Vo VBA editore kliknite kdekoľvek vnútri sub `ConfigureApiKey` a stlačte `F5`, alebo
- V Exceli **Developer → Macros**, vyberte `ConfigureApiKey`, **Run**.

Vložte svoj kľúč `xkeysib-...`. Makro ho ukladá ako vlastnú vlastnosť dokumentu vo vnútri samotného zošita. Nie je v zdrojovom kóde, nie je v registroch a cestuje so súborom (takže pozor: ak pošlete .xlsm e-mailom niekomu, API kľúč putuje s ním).

Ak chcete radšej kľúč mimo zošita, prepnite úložisko na register Windows:

```vba
' Replace the body of ConfigureApiKey with:
SaveSetting "Brevo", "Sync", "ApiKey", key

' And GetApiKey with:
GetApiKey = GetSetting("Brevo", "Sync", "ApiKey", "")
```

`SaveSetting`/`GetSetting` zapisuje pod `HKCU\Software\VB and VBA Program Settings\Brevo\Sync`, na používateľa, nie na zošit. Použite to, ak má viacero zošitov zdieľať jeden kľúč, alebo ak nechcete kľúč v súbore.

## Krok 5: pridajte tlačidlo na hárok

Toto je to, čo z toho robí zážitok jedného kliku pre netechnických používateľov.

**Insert → Shapes → Rectangle**, pretiahnite jeden na hárok, popíšte ho „Sync to Brevo.” Pravým tlačidlom myši na tvar, **Assign Macro**, vyberte `SyncSheetToBrevo`. Hotovo.

Alebo, pre vyleštenejšie rozhranie, pridajte vlastnú kartu pásu cez Office Custom UI Editor. Ale pre väčšinu interných nástrojov tvar ako tlačidlo bohato stačí.

## Krok 6: spustite to

Kliknite na tlačidlo. Makro prečíta riadky, zoskupí ich do dávok, pošle každú dávku do Brevo a zobrazí súhrnné okno. Import Brevo je asynchrónny, takže správa o úspechu znamená „Brevo prijalo dávku”. Skutočné vytvorenie kontaktov sa deje na strane servera v nasledujúcich pár sekundách. Dostanete e-mailový súhrn od Brevo, keď to dokončí (pokiaľ ste nenastavili `disableNotification: true`).

## Bežné úskalia

**Tlačidlo nič nerobí a niet chyby.** Makrá sú zakázané. Pozrite sa na žltý bezpečnostný pruh v hornej časti hárka a kliknite na **Enable Content**. Ak vaša organizácia blokuje makrá, pozrite si nižšie cestu cez trust center a podpisovanie kódu.

**`Compile error: User-defined type not defined`.** Ste na Mac Exceli, ktorý nemá `MSXML2.XMLHTTP`. Mac VBA nemôže robiť HTTPS požiadavky priamo. Použite namiesto toho cestu Office Scripts nižšie.

**`400 Bad Request` z Brevo bez zjavnej príčiny.** Takmer vždy jedna z: (a) vlastný atribút vo vašom hárku ešte v Brevo neexistuje, najprv ho vytvorte; (b) chyba JSON escapovania, úvodzovky alebo spätné lomítka v hodnotách buniek, ktoré sa neescapovali. Funkcia `EscapeJson` v kóde rieši štandardné prípady. Ak vaše údaje obsahujú podivné znaky, zalogujte `payload` do okna Immediate (`Debug.Print payload`) a preskúmajte.

**`401 Unauthorized`.** Zlá hlavička. Je to `api-key` (malé písmená, pomlčka), nie `Authorization`. Makro používa správny názov, ale ak ste si skopírovali úryvok inde, dvakrát skontrolujte.

**Excel zamrzne pri veľkých importoch.** Makro beží synchrónne na UI vlákne. Pre 50 000+ riadkov budete sledovať, ako Excel visí 10 až 30 sekúnd, kým buduje JSON a čaká na Brevo. Buď to akceptujte, alebo prepnite `MSXML2.XMLHTTP` na jeho asynchrónny variant. Ale v takej škále je vám lepšie v Power Automate (ďalšia sekcia).

## Keď VBA nestačí: Office Scripts + Power Automate

VBA nezvládne plánovanú cloudovú synchronizáciu. Ak potrebujete:

- Aby sa zošit synchronizoval do Brevo každú hodinu bez toho, aby ho ktokoľvek otvoril
- Zošit v OneDrive/SharePoint, upravovaný z webu
- IT oddelenie, ktoré zakazuje desktopové makrá

…tak chcete **Office Scripts** (cloudový ekvivalent Apps Script od Microsoftu) plus **Power Automate** (ich vrstvu plánovania a HTTP).

Rozdelenie: Office Scripts číta hárok a vracia údaje kontaktov. Power Automate berie tie údaje a posiela ich do Brevo pri triggeri.

**Office Script** (Excel pre web, **Automate → New Script**):

```typescript
function main(workbook: ExcelScript.Workbook): {email: string, attributes: Record<string, string>}[] {
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getUsedRange();
  if (!range) return [];

  const values = range.getValues() as string[][];
  if (values.length < 2) return [];

  const headers = values[0].map(h => String(h).trim());
  const emailIdx = headers.findIndex(h => h.toLowerCase() === "email");
  if (emailIdx === -1) throw new Error("Sheet must have an 'email' column");

  const contacts: {email: string, attributes: Record<string, string>}[] = [];
  for (let r = 1; r < values.length; r++) {
    const row = values[r];
    const email = String(row[emailIdx] ?? "").trim().toLowerCase();
    if (!email || !email.includes("@")) continue;

    const attributes: Record<string, string> = {};
    for (let c = 0; c < headers.length; c++) {
      if (c === emailIdx) continue;
      const v = row[c];
      if (v === null || v === "") continue;
      attributes[headers[c].toUpperCase()] = String(v);
    }
    contacts.push({ email, attributes });
  }
  return contacts;
}
```

**Tok Power Automate**:

1. **Trigger**: *Recurrence* (každú 1 hodinu), alebo manuálne tlačidlo, alebo „When a row is modified”, ak chcete synchronizáciu riadenú zmenou.

2. **Action**: *Excel Online → Run script*. Ukážte naň váš zošit a skript vyššie. Uložte jeho návratovú hodnotu ako `contacts`.

3. **Action**: *HTTP* (toto je Premium konektor, pozrite si nižšie poznámku o licencovaní).

   - Method: `POST`

   - URI: `https://api.brevo.com/v3/contacts/import`

   - Headers: `api-key: xkeysib-...`, `Content-Type: application/json`

   - Body:

     ```json
     {
       "jsonBody": @{outputs('Run_script')?['body/result']},
       "listIds": [42],
       "updateExistingContacts": true
     }
     ```

4. **Action**: *Condition*. Ak stavový kód nie je 202, pošlite upozornenie cez Teams alebo e-mail.

**Realita licencovania**: akcia *HTTP* je Premium konektor Power Automate. Na plánoch Microsoft 365 Business Basic/Standard dostávate štandardné konektory, ale nie Premium. Najlacnejšia obchádzka je doplnok **Power Automate Premium** (asi 15 USD/používateľa/mesiac v čase písania), alebo presunúť HTTP do malej Azure Function, ktorú môže zavolať štandardný tok. Ak ste už na E3/E5 s Premium v balíku, máte vystarané.

To je hlavný dôvod, prečo je príbeh Apps Script čistejší: `UrlFetchApp` v Apps Script je zadarmo a bez obmedzení, zatiaľ čo ekvivalent od Microsoftu kladie sieťové volanie za platenú úroveň konektora.

## VBA vs Office Scripts vs Apps Script: kedy si vybrať čo

| Potreba | Najlepšia možnosť |
| --- | --- |
| Tlačidlo jedného kliku v zošite, ktorý váš tím už denne otvára | **VBA makro** (táto príručka, horná polovica) |
| Zošit v OneDrive/SharePoint, hodinová automatická synchronizácia | **Office Scripts + Power Automate** (potrebuje Premium pre HTTP) |
| Iba Mac Excel, nemôže používať VBA | **Office Scripts + Power Automate** |
| Údaje žijú v Google Sheets, nie v Exceli | **[Apps Script](https://tajo.io/sk/blog/import-google-sheet-contacts-to-brevo-apps-script)** (zadarmo, plánované triggery vstavané) |
| Jednorazový import, nikdy už nebude potrebný | **Save As → CSV** a použite [skript pre CSV import](https://tajo.io/sk/blog/import-csv-contacts-to-brevo-with-a-script) |
| Hromadný import zo súboru >10 MB | **CSV s `fileUrl`**, pozrite si [CSV príručku](https://tajo.io/sk/blog/import-csv-contacts-to-brevo-with-a-script#files-larger-than-10-mb-use-fileurl) |

## Prečo to poráža Zapier a no-code platformy

Pre opakovanú prácu Excel-do-Brevo si nástroje na automatizáciu tretích strán (Zapier, Make, n8n) účtujú za úlohu a kladú tretiu stranu medzi vaše údaje a Brevo. Cesta VBA má nulové priebežné náklady, žiadny tok údajov tretej strany a žije vo vnútri súboru. Keď sa zošit presunie, integrácia sa presunie s ním. Office Scripts + Power Automate je podobné, ale s Microsoftom ako treťou stranou (už vo vašom stacku, ak ste na M365).

Celý zmysel endpointu Brevo `POST /v3/contacts/import` je v tom, že nepotrebujete lepiacu platformu. Vaše nástroje už vedia, ako robiť HTTP požiadavky.

## Ďalšie čítanie

- [Brevo API: Import contacts reference](https://developers.brevo.com/reference/import-contacts)
- [Microsoft Office Scripts overview](https://learn.microsoft.com/en-us/office/dev/scripts/overview/excel)
- [Power Automate HTTP connector](https://learn.microsoft.com/en-us/connectors/webcontents/) (Premium)
- [The Apps Script equivalent for Google Sheets](https://tajo.io/sk/blog/import-google-sheet-contacts-to-brevo-apps-script)
- [The script-based CSV/Excel import (Python, Node.js, cURL)](https://tajo.io/sk/blog/import-csv-contacts-to-brevo-with-a-script)

## Často Kladené Otázky

**Dokáže VBA makro skutočne volať API Brevo z vnútra Excelu?**

Áno. VBA dokáže robiť HTTP požiadavky cez MSXML2.XMLHTTP, ktorý sa dodáva s každou modernou inštaláciou Windowsu. Makro pošle JSON na api.brevo.com/v3/contacts/import, ten istý endpoint, ktorý by zasiahol Python alebo Node skript. Mac Excel to vie tiež cez Office Scripts + Power Automate, ale desktopové Mac VBA nie (žiadny MSXML).

**Môžem to spustiť podľa rozvrhu ako časové triggery v Apps Script?**

Nie zo samotného VBA. Excel musí byť otvorený, aby sa spustil Application.OnTime. Pre bezobslužnú plánovanú synchronizáciu máte dve možnosti: (1) Windows Task Scheduler, ktorý otvorí zošit a spustí makro, alebo (2) Office Scripts spúšťané plánovaným tokom Power Automate (pokryté neskôr v tejto príručke).

**Je VBA bezpečné? Naša spoločnosť blokuje makrá.**

VBA makrá bežia s prístupom k súborovému systému a registrom, takže ich predvolené blokovanie je rozumná politika. Dve cesty okolo toho: (1) podpíšte makro certifikátom na podpisovanie kódu a vložte zošit do Trusted Location, alebo (2) preskočte VBA úplne a použite Office Scripts (TypeScript, sandbox, žiadny prístup k súborovému systému). Office Scripts je moderná Microsoftom posvätená cesta.

**Ako sa to porovnáva s prístupom Google Apps Script?**

Apps Script je bližšie k „nastav a zabudni”: beží v cloude Googlu, plánované triggery vstavané, žiadna licencia Excelu/Power Automate. VBA vyhráva pri offline práci a manuálnej synchronizácii jedným klikom zo zošita, ktorý váš tím už má otvorený. Office Scripts + Power Automate je cloudovo-plánovaný ekvivalent na strane Microsoftu, ale Power Automate často potrebuje platený premium konektor pre odchádzajúce HTTP.

## Súvisiace články

### [Ako importovať kontakty z CSV alebo Excelu do Brevo pomocou skriptu (Python, Node.js, cURL)](https://tajo.io/sk/blog/import-csv-contacts-to-brevo-with-a-script/)

30\. 4. 2026 · 5 min čítania

CSV → Brevo

### [Import kontaktov z Google Sheets do Brevo pomocou Apps Script](https://tajo.io/sk/blog/import-google-sheet-contacts-to-brevo-apps-script/)

30\. 4. 2026 · 3 min čítania

Google Sheets → Brevo

### [Export dát a migrácia v Brevo: ako dostať dáta dnu aj von](https://tajo.io/sk/blog/brevo-data-export-migration/)

19\. 8. 2026 · 9 min čítania

8 sekcií
