---
title: "Kako poslati Excel stike v Brevo z VBA makrom (in alternativa Office Scripts)"
description: "Delujoč VBA makro, ki pošlje stike iz Excelovega lista v Brevo API z enim klikom. Plus, kdaj namesto tega uporabiti Office Scripts + Power Automate, in kompromisi proti rešitvi z Google Apps Script."
url: https://tajo.io/sl/blog/import-excel-contacts-to-brevo-with-vba-macro/
markdown: https://tajo.io/sl/blog/import-excel-contacts-to-brevo-with-vba-macro.md
lang: sl-SI
author: "Set Noa"
author_url: https://tajo.io/sl/set-noa/
published: 2026-04-30
updated: 2026-05-10
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, 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, sk-SK: /sk/blog/import-excel-contacts-to-brevo-with-vba-macro.md}
---

[Sinhronizacija podatkov](https://tajo.io/sl/blog/?category=data-sync)

# Kako poslati Excel stike v Brevo z VBA makrom (in alternativa Office Scripts)

Delujoč VBA makro, ki pošlje stike iz Excelovega lista v Brevo API z enim klikom. Plus, kdaj namesto tega uporabiti Office Scripts + Power Automate, in kompromisi proti rešitvi z Google Apps Script.

excel to brevo

Kako poslati Excel stike v Brevo z VBA makrom?

Dve sprejemljivi poti: VBA makro znotraj .xlsm (najboljše za ročno sinhronizacijo z enim klikom iz namiznega Excela, brez licenciranja) ali Office Scripts + Power Automate (najboljše za načrtovano oblačno sinhronizacijo, vendar potrebuje M365 + Power Automate Premium za HTTP). Oba zadeneta Brevo POST /v3/contacts/import. Polna koda za oba spodaj.

[Izvedite več](https://tajo.io/sl/blog/import-excel-contacts-to-brevo-with-vba-macro/#kaj-makro-po%C4%8Dne)

| Izvorno polje | Ciljno polje | Vzorčna vrednost |
| --- | --- | --- |
| `email` | `EMAIL` | `alex@example.com` |
| `firstName` | `FIRSTNAME` | `Alex` |
| `company` | `COMPANY` | `Example Co` |

Imate stike v Excelu in jih želite imeti v Brevo. Hiter in umazan odgovor je shraniti datoteko kot `.csv` in jo uvoziti, kar je v redu enkrat. Za karkoli, kar počnete večkrat (tedenska prodajna predaja, delovni zvezek, ki ga vaša ekipa dnevno posodablja, partnerski seznam, ki se osvežuje), želite gumb prav v Excelu, ki opravi sinhronizacijo.

Ta vodnik pokriva dve poti, ki za to dejansko imata smisel:

1. **VBA makro vstavljen v delovni zvezek.** Brez licenciranja, brez oblaka, deluje brez povezave, teče v trenutku, ko uporabnik klikne na gumb. Pravi odgovor za približno 80 % primerov „Excel v Brevo”.
2. **Office Scripts + Power Automate.** TypeScript namesto VBA, teče v oblaku, podpira načrtovane sprožilce. Pravi odgovor, če delovni zvezek živi v OneDrive/SharePoint in želite nenadzorovano sinhronizacijo, vendar bodite pozorni na licenciranje Power Automate.

Če iščete Google Sheets ekvivalent, si oglejte [spremljevalni članek o Apps Script](https://tajo.io/sl/blog/import-google-sheet-contacts-to-brevo-apps-script). In če želite samo enkratni CSV uvoz iz skripte na vašem laptopu, ima [vodnik za uvoz CSV](https://tajo.io/sl/blog/import-csv-contacts-to-brevo-with-a-script) različice v Pythonu, Node.js in cURL.

## Kaj makro počne

Ko uporabnik klikne na gumb „Sync to Brevo” na listu:

1. Prebere vsako vrstico iz aktivnega delovnega lista (najprej vrstica glave, en stik na vrstico).
2. Zgradi polje JSON v obliki za parameter `jsonBody` Brevo.
3. Pošlje na `https://api.brevo.com/v3/contacts/import` z API ključem, shranjenim v delovnem zvezku.
4. Pokaže okno s sporočilom z rezultatom.

To je vse. Približno 120 vrstic VBA. Spodaj je celoten delujoč modul.

## Postavitev lista, ki jo makro pričakuje

| 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 obvezen. Vsak drug stolpec postane Brevo atribut stika, mapiran prek glave stolpca (z velikimi črkami) na ime atributa. Tako `firstName` postane `FIRSTNAME`, `company` postane `COMPANY`. Lastni atributi (karkoli onstran standardnega niza) morajo najprej obstajati v vašem računu Brevo. Definirajte jih pod **Contacts → Settings → Contact attributes**.

## 1. korak: odprite VBA urejevalnik

V Excelu: pritisnite `Alt + F11`. Odpre se VBA urejevalnik. V plošči **Project** levo z desnim klikom na vaš delovni zvezek izberite **Insert → Module**. Pojavi se prazen `Module1`.

## 2. korak: prilepite celoten makro

Vsebino `Module1` zamenjajte s tem:

```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
```

## 3. korak: shranite delovni zvezek kot .xlsm

VBA makri obstajajo samo v delovnih zvezkih z omogočenimi makri. Shrani kot, izberite **Excel Macro-Enabled Workbook (.xlsm)**. Navadna oblika `.xlsx` makre tiho odstrani. Mnogi ljudje tako prvič izgubijo kodo.

## 4. korak: nastavite svoj API ključ

Zaženite `ConfigureApiKey` enkrat. Bodisi:

- V VBA urejevalniku kliknite kjerkoli znotraj sub `ConfigureApiKey` in pritisnite `F5`, ali
- V Excelu **Developer → Macros**, izberite `ConfigureApiKey`, **Run**.

Prilepite svoj `xkeysib-...` ključ. Makro ga shrani kot lastno lastnost dokumenta znotraj samega delovnega zvezka. Ni v izvorni kodi, ni v registru in potuje z datoteko (zato bodite pozorni: če nekomu pošljete .xlsm po e-pošti, gre API ključ z njim).

Če bi raje dali ključ izven delovnega zvezka, zamenjajte shranjevanje na register sistema 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 uporabnika, ne na delovni zvezek. Uporabite to, če mora več delovnih zvezkov deliti en ključ, ali če nočete ključa v datoteki.

## 5. korak: dodajte gumb na list

To je tisto, kar pretvori v izkušnjo z enim klikom za netehnične uporabnike.

**Insert → Shapes → Rectangle**, spustite enega na list, označite ga „Sync to Brevo.” Z desnim klikom na obliko, **Assign Macro**, izberite `SyncSheetToBrevo`. Končano.

Ali pa, za bolj poliran vmesnik, dodajte zavihek po meri prek Office Custom UI Editor. Toda za večino notranjih orodij je oblika kot gumb obilo.

## 6. korak: zaženite

Kliknite gumb. Makro prebere vrstice, jih razdeli na pakete, vsak paket pošlje v Brevo in pokaže povzetek v oknu sporočila. Brevo uvoz je asinhron, zato sporočilo o uspehu pomeni „Brevo je sprejel paket”. Sama izdelava stikov se zgodi na strani strežnika v naslednjih nekaj sekundah. Dobili boste povzetek po e-pošti od Brevo, ko bo končal (razen če ste nastavili `disableNotification: true`).

## Pogoste pasti

**Gumb ne naredi nič in ni napake.** Makri so onemogočeni. Poglejte rumeno varnostno vrstico na vrhu lista in kliknite **Enable Content**. Če vaša organizacija blokira makre, si oglejte spodaj pot prek trust centra in podpisovanja kode.

**`Compile error: User-defined type not defined`.** Ste na Mac Excelu, ki nima `MSXML2.XMLHTTP`. Mac VBA ne more izvajati HTTPS zahtev neposredno. Namesto tega uporabite spodnjo pot Office Scripts.

**`400 Bad Request` iz Brevo brez očitnega razloga.** Skoraj vedno ena izmed: (a) lastni atribut v vašem listu še ne obstaja v Brevo, najprej ga ustvarite; (b) napaka pri ubežanju JSON, narekovaji ali poševnice nazaj v vrednostih celic, ki se niso ubežali. Funkcija `EscapeJson` v kodi obravnava standardne primere. Če imajo vaši podatki nenavadne znake, zabeležite `payload` v okno Immediate (`Debug.Print payload`) in si ga oglejte.

**`401 Unauthorized`.** Napačna glava. Je `api-key` (male črke, vezaj), ne `Authorization`. Makro uporablja pravilno, vendar če ste izrezek skopirali drugod, dvakrat preverite.

**Excel zamrzne pri velikih uvozih.** Makro teče sinhrono na UI niti. Za 50.000+ vrstic boste opazovali, kako Excel visi 10 do 30 sekund, medtem ko gradi JSON in čaka na Brevo. Ali to sprejmete, ali pa preklopite `MSXML2.XMLHTTP` na njegovo asinhrono različico. Toda pri tej skali vam je bolje v Power Automate (naslednji odsek).

## Ko VBA ni dovolj: Office Scripts + Power Automate

VBA ne more izvajati načrtovane oblačne sinhronizacije. Če potrebujete:

- Da se delovni zvezek sinhronizira v Brevo vsako uro, ne da bi ga kdorkoli odprl
- Delovni zvezek v OneDrive/SharePoint, urejan iz spleta
- IT oddelek, ki prepoveduje namizne makre

…potem želite **Office Scripts** (Microsoftov oblačni ekvivalent Apps Script) plus **Power Automate** (njihov načrtovalec in HTTP plast).

Razdelitev: Office Scripts prebere list in vrne podatke o stikih. Power Automate vzame te podatke in jih ob sprožilcu pošlje v Brevo.

**Office Script** (Excel za splet, **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;
}
```

**Power Automate tok**:

1. **Trigger**: *Recurrence* (vsako 1 uro), ali ročni gumb, ali „When a row is modified”, če želite sinhronizacijo, ki jo poganjajo spremembe.

2. **Action**: *Excel Online → Run script*. Usmerite ga na vaš delovni zvezek in zgornjo skripto. Shranite njegovo vrnjeno vrednost kot `contacts`.

3. **Action**: *HTTP* (to je Premium konektor, glejte spodaj opombo o licenciranju).

   - 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*. Če statusna koda ni 202, pošljite Teams/e-poštno opozorilo.

**Realnostni pregled licenciranja**: akcija *HTTP* je Premium konektor Power Automate. Na načrtih Microsoft 365 Business Basic/Standard dobite standardne konektorje, vendar ne Premium. Najcenejša obhodna pot je dodatek **Power Automate Premium** (približno 15 USD/uporabnika/mesec v času pisanja), ali pa premaknite HTTP v majhno Azure Function, ki jo lahko pokliče standardni tok. Če ste že na E3/E5 z vključenim Premium, ste pripravljeni.

To je glavni razlog, zakaj je zgodba Apps Script čistejša: `UrlFetchApp` v Apps Script je brezplačen in neomejen, medtem ko Microsoftov ekvivalent postavlja omrežni klic za plačan nivo konektorja.

## VBA proti Office Scripts proti Apps Script: kdaj izbrati kaj

| Potreba | Najboljša možnost |
| --- | --- |
| Gumb z enim klikom v delovnem zvezku, ki ga vaša ekipa že dnevno odpira | **VBA makro** (ta vodnik, zgornja polovica) |
| Delovni zvezek v OneDrive/SharePoint, urna samodejna sinhronizacija | **Office Scripts + Power Automate** (potrebuje Premium za HTTP) |
| Samo Mac Excel, ne morete uporabiti VBA | **Office Scripts + Power Automate** |
| Podatki živijo v Google Sheets, ne v Excelu | **[Apps Script](https://tajo.io/sl/blog/import-google-sheet-contacts-to-brevo-apps-script)** (brezplačno, načrtovani sprožilci vgrajeni) |
| Enkratni uvoz, nikoli več ne bo potreben | **Save As → CSV** in uporabite [skripto za uvoz CSV](https://tajo.io/sl/blog/import-csv-contacts-to-brevo-with-a-script) |
| Množični uvoz iz datoteke >10 MB | **CSV s `fileUrl`**, glejte [CSV vodnik](https://tajo.io/sl/blog/import-csv-contacts-to-brevo-with-a-script#files-larger-than-10-mb-use-fileurl) |

## Zakaj to premaga Zapier in no-code platforme

Za ponavljajoče se delo Excel-v-Brevo orodja za avtomatizacijo tretjih oseb (Zapier, Make, n8n) zaračunavajo na nalogo in postavljajo tretjo osebo med vaše podatke in Brevo. Pristop VBA ima ničelne tekoče stroške, nobenega toka podatkov tretje osebe in živi znotraj datoteke. Ko se delovni zvezek premakne, se z njim premakne tudi integracija. Office Scripts + Power Automate je podobno, vendar z Microsoftom kot tretjo osebo (že v vašem stacku, če ste na M365).

Celotni smisel Brevo endpointa `POST /v3/contacts/import` je, da ne potrebujete platforme za lepljenje. Vaša orodja že vedo, kako izvajati HTTP zahteve.

## Nadaljnje branje

- [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/sl/blog/import-google-sheet-contacts-to-brevo-apps-script)
- [The script-based CSV/Excel import (Python, Node.js, cURL)](https://tajo.io/sl/blog/import-csv-contacts-to-brevo-with-a-script)

## Pogosto Zastavljena Vprašanja

**Ali lahko VBA makro res kliče Brevo API iz Excela?**

Da. VBA lahko izvaja HTTP zahteve prek MSXML2.XMLHTTP, ki je vključen v vsako sodobno namestitev sistema Windows. Makro pošlje JSON na api.brevo.com/v3/contacts/import, isti endpoint, kot bi ga zadel Python ali Node skript. Mac Excel to lahko prav tako prek Office Scripts + Power Automate, vendar namizni Mac VBA tega ne more (brez MSXML).

**Ali lahko to izvajam po urniku, kot časovne sprožilce v Apps Script?**

Iz samega VBA ne. Excel mora biti odprt, da se sproži Application.OnTime. Za nenadzorovano sinhronizacijo po urniku imate dve možnosti: (1) Windows Task Scheduler, ki odpre delovni zvezek in zažene makro, ali (2) Office Scripts, ki jih sproži Power Automate načrtovani tok (pokrito kasneje v tem vodniku).

**Ali je VBA varen? Moje podjetje blokira makre.**

VBA makri tečejo z dostopom do datotečnega sistema in registra, zato je njihovo privzeto blokiranje smiselna politika. Dve poti okoli tega: (1) podpišite makro s certifikatom za podpisovanje kode in delovni zvezek dajte v Trusted Location, ali (2) preskočite VBA v celoti in uporabite Office Scripts (TypeScript, sandbox, brez dostopa do datotečnega sistema). Office Scripts je sodobna od Microsofta blagoslovljena pot.

**Kako se to primerja s pristopom Google Apps Script?**

Apps Script je bližje pristopu „nastavi in pozabi”: teče v Googlovem oblaku, načrtovani sprožilci so vgrajeni, brez licenc Excel ali Power Automate. VBA zmaga pri delu brez povezave in ročni sinhronizaciji z enim klikom iz delovnega zvezka, ki ga vaša ekipa že ima odprtega. Office Scripts + Power Automate je oblak/načrtovani ekvivalent na Microsoftovi strani, vendar Power Automate pogosto potrebuje plačan premium konektor za odhodni HTTP.

## Sorodni članki

### [Kako uvoziti stike iz CSV ali Excela v Brevo s skripto (Python, Node.js, cURL)](https://tajo.io/sl/blog/import-csv-contacts-to-brevo-with-a-script/)

30\. apr. 2026 · 5 min branja

CSV → Brevo

### [Uvoz stikov iz Google Sheets v Brevo s storitvijo Apps Script](https://tajo.io/sl/blog/import-google-sheet-contacts-to-brevo-apps-script/)

30\. apr. 2026 · 3 min branja

Google Sheets → Brevo

### [Izvoz in migracija podatkov iz Brevo: kako podatke prenesete noter ali ven](https://tajo.io/sl/blog/brevo-data-export-migration/)

19\. avg. 2026 · 9 min branja

8 razdelkov
