---
title: "VBA मैक्रो के साथ Excel कॉन्टैक्ट्स को Brevo में कैसे पुश करें (और Office Scripts विकल्प)"
description: "एक काम करने वाला VBA मैक्रो जो Excel शीट से कॉन्टैक्ट्स को एक क्लिक में Brevo के API पर पोस्ट करता है, साथ ही कब इसके बजाय Office Scripts + Power Automate का उपयोग करें, और Google Apps Script सेटअप के मुकाबले ट्रेड-ऑफ़।"
url: https://tajo.io/hi/blog/import-excel-contacts-to-brevo-with-vba-macro/
markdown: https://tajo.io/hi/blog/import-excel-contacts-to-brevo-with-vba-macro.md
lang: hi-IN
author: "Set Noa"
author_url: https://tajo.io/hi/set-noa/
published: 2026-04-30
updated: 2026-05-19
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, 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, sk-SK: /sk/blog/import-excel-contacts-to-brevo-with-vba-macro.md}
---

[API](https://tajo.io/hi/blog/?category=api)

[इंटीग्रेशन](https://tajo.io/hi/blog/?category=integrations)

# VBA मैक्रो के साथ Excel कॉन्टैक्ट्स को Brevo में कैसे पुश करें (और Office Scripts विकल्प)

एक काम करने वाला VBA मैक्रो जो Excel शीट से कॉन्टैक्ट्स को एक क्लिक में Brevo के API पर पोस्ट करता है, साथ ही कब इसके बजाय Office Scripts + Power Automate का उपयोग करें, और Google Apps Script सेटअप के मुकाबले ट्रेड-ऑफ़।

excel to brevo

क्या VBA मैक्रो वास्तव में Excel के अंदर से Brevo के API को कॉल कर सकता है?

दो व्यावहारिक रास्ते: .xlsm के अंदर एक VBA मैक्रो (डेस्कटॉप Excel से एक-क्लिक मैनुअल सिंक के लिए सर्वोत्तम, कोई लाइसेंसिंग नहीं) या Office Scripts + Power Automate (शेड्यूल्ड क्लाउड सिंक के लिए सर्वोत्तम, लेकिन HTTP के लिए M365 + Power Automate Premium चाहिए)। दोनों Brevo के POST /v3/contacts/import पर हिट करते हैं। दोनों के लिए पूरा कोड नीचे है।

[और जानें](https://tajo.io/hi/blog/import-excel-contacts-to-brevo-with-vba-macro/#%E0%A4%AE%E0%A5%88%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B-%E0%A4%95%E0%A5%8D%E0%A4%AF%E0%A4%BE-%E0%A4%95%E0%A4%B0%E0%A4%A4%E0%A4%BE-%E0%A4%B9%E0%A5%88)

| स्रोत फ़ील्ड | गंतव्य फ़ील्ड | नमूना मान |
| --- | --- | --- |
| `email` | `EMAIL` | `alex@example.com` |
| `firstName` | `FIRSTNAME` | `Alex` |
| `company` | `COMPANY` | `Example Co` |

आपके पास Excel में कॉन्टैक्ट्स हैं और आप उन्हें Brevo में चाहते हैं। तेज़-और-गंदा जवाब है फ़ाइल को `.csv` के रूप में सेव करें और इसे इम्पोर्ट करें, जो एक बार के लिए ठीक है। कुछ भी जो आप बार-बार कर रहे हैं, साप्ताहिक सेल्स हैंडऑफ़, एक वर्कबुक जिसे आपकी टीम रोज़ अपडेट करती है, एक पार्टनर लिस्ट जो रिफ़्रेश होती रहती है, के लिए आप सीधे Excel के अंदर एक बटन चाहते हैं जो सिंक करे।

यह गाइड उन दो रास्तों को कवर करती है जो वास्तव में इसके लिए सही हैं:

1. **वर्कबुक में एम्बेडेड एक VBA मैक्रो**, कोई लाइसेंसिंग नहीं, कोई क्लाउड नहीं, ऑफ़लाइन काम करता है, उस पल चलता है जब उपयोगकर्ता एक बटन क्लिक करता है। “Excel-to-Brevo” मामलों के लगभग 80% के लिए सही उत्तर।
2. **Office Scripts + Power Automate**, VBA के बजाय TypeScript, क्लाउड में चलता है, शेड्यूल्ड ट्रिगर्स को सपोर्ट करता है। सही उत्तर यदि वर्कबुक OneDrive/SharePoint पर रहती है और आप अनअटेंडेड सिंक चाहते हैं, लेकिन Power Automate लाइसेंसिंग के बारे में सावधान रहें।

यदि आप Google Sheets समतुल्य की तलाश में हैं, तो [Apps Script पर साथी आर्टिकल](https://tajo.io/hi/blog/import-google-sheet-contacts-to-brevo-apps-script) देखें। और यदि आप बस अपने लैपटॉप पर एक स्क्रिप्ट से वन-शॉट CSV इम्पोर्ट चाहते हैं, तो [CSV इम्पोर्ट गाइड](https://tajo.io/hi/blog/import-csv-contacts-to-brevo-with-a-script) में Python, Node.js, और cURL वर्शन्स हैं।

## मैक्रो क्या करता है

जब उपयोगकर्ता शीट पर “Sync to Brevo” बटन क्लिक करता है:

1. एक्टिव वर्कशीट से हर रो पढ़ें (हेडर रो पहले, एक कॉन्टैक्ट प्रति रो)।
2. Brevo के `jsonBody` पैरामीटर के लिए शेप्ड एक JSON ऐरे बनाएँ।
3. इसे वर्कबुक के स्टोर्ड API key के साथ `https://api.brevo.com/v3/contacts/import` पर पोस्ट करें।
4. परिणाम के साथ एक मैसेज बॉक्स दिखाएँ।

बस इतना ही। लगभग 120 लाइनें VBA। नीचे पूरा, काम करने वाला मॉड्यूल है।

## मैक्रो जो शीट लेआउट अपेक्षा करता है

| 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` अनिवार्य है। हर दूसरा कॉलम Brevo कॉन्टैक्ट एट्रिब्यूट बन जाता है, कॉलम हेडर (अपरकेस्ड) द्वारा एट्रिब्यूट नाम पर मैप किया जाता है। तो `firstName` -> `FIRSTNAME`, `company` -> `COMPANY`। कस्टम एट्रिब्यूट्स (स्टैंडर्ड सेट से परे कुछ भी) को पहले आपके Brevo अकाउंट में मौजूद होना चाहिए, उन्हें **Contacts -> Settings -> Contact attributes** के तहत डिफ़ाइन करें।

## स्टेप 1: VBA एडिटर खोलें

Excel में: `Alt + F11` दबाएँ। VBA एडिटर खुलता है। बाईं ओर **Project** पैन में, अपनी वर्कबुक पर राइट-क्लिक करें और **Insert -> Module** चुनें। एक खाली `Module1` दिखाई देता है।

## स्टेप 2: पूरा मैक्रो पेस्ट करें

`Module1` के कंटेंट को इससे रिप्लेस करें:

```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: वर्कबुक को .xlsm के रूप में सेव करें

VBA मैक्रोज़ केवल मैक्रो-इनेबल्ड वर्कबुक्स में बने रहते हैं। Save As -> **Excel Macro-Enabled Workbook (.xlsm)** चुनें। साधारण `.xlsx` फ़ॉर्मेट चुपचाप मैक्रोज़ को हटा देता है, बहुत से लोग पहली बार इस तरह कोड खो देते हैं।

## स्टेप 4: अपनी API key कॉन्फ़िगर करें

`ConfigureApiKey` को एक बार चलाएँ। या तो:

- VBA एडिटर में, `ConfigureApiKey` सब के अंदर कहीं भी क्लिक करें और `F5` दबाएँ, या
- Excel में, **Developer -> Macros**, `ConfigureApiKey` चुनें, **Run**।

अपनी `xkeysib-...` key पेस्ट करें। मैक्रो इसे वर्कबुक के अंदर एक कस्टम डॉक्यूमेंट प्रॉपर्टी के रूप में स्टोर करता है, यह सोर्स कोड में नहीं है, रजिस्ट्री में नहीं है, और फ़ाइल के साथ यात्रा करता है (इसलिए सावधान रहें: यदि आप .xlsm को किसी को ईमेल करते हैं, तो API key इसके साथ जाती है)।

यदि आप key को वर्कबुक के बाहर रखना पसंद करेंगे, तो स्टोरेज को Windows रजिस्ट्री में स्वैप करें:

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

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

`SaveSetting`/`GetSetting` `HKCU\Software\VB and VBA Program Settings\Brevo\Sync` के तहत लिखता है, प्रति-उपयोगकर्ता, प्रति-वर्कबुक नहीं। इसका उपयोग करें यदि कई वर्कबुक्स को एक key साझा करनी चाहिए, या यदि आप नहीं चाहते कि key फ़ाइल में हो।

## स्टेप 5: शीट पर एक बटन जोड़ें

यह वही है जो इसे ग़ैर-तकनीकी उपयोगकर्ताओं के लिए एक-क्लिक अनुभव में बदलता है।

**Insert -> Shapes -> Rectangle**, एक को शीट पर ड्रॉप करें, इसे “Sync to Brevo” लेबल दें। शेप पर राइट-क्लिक करें -> **Assign Macro** -> `SyncSheetToBrevo` चुनें। हो गया।

या, अधिक पॉलिश्ड UI के लिए, Office Custom UI Editor के माध्यम से एक कस्टम रिबन टैब जोड़ें, लेकिन अधिकांश आंतरिक टूल्स के लिए, शेप-एज़-बटन काफी है।

## स्टेप 6: इसे चलाएँ

बटन क्लिक करें। मैक्रो रोज़ पढ़ता है, उन्हें बैच करता है, हर बैच को Brevo में पोस्ट करता है, और एक सारांश मैसेज बॉक्स दिखाता है। Brevo का इम्पोर्ट asynchronous है, इसलिए सक्सेस मैसेज का अर्थ है “Brevo ने बैच स्वीकार कर लिया”, वास्तविक कॉन्टैक्ट निर्माण अगले कुछ सेकंड में सर्वर साइड पर होता है। जब यह समाप्त हो जाएगा तो आपको Brevo से एक ईमेल सारांश मिलेगा (जब तक आप `disableNotification: true` सेट नहीं करते)।

## सामान्य गलतियाँ

**बटन कुछ नहीं करता और कोई एरर नहीं है.** मैक्रोज़ डिसेबल्ड हैं। शीट के शीर्ष पर पीली सिक्योरिटी बार देखें, **Enable Content** क्लिक करें। यदि आपका org मैक्रोज़ ब्लॉक करता है, तो नीचे ट्रस्ट-सेंटर / कोड-साइनिंग पाथ देखें।

**`Compile error: User-defined type not defined`.** आप Mac Excel पर हैं, जिसमें `MSXML2.XMLHTTP` नहीं है। Mac VBA सीधे HTTPS रिक्वेस्ट नहीं कर सकता; इसके बजाय नीचे Office Scripts पाथ का उपयोग करें।

**बिना स्पष्ट कारण के Brevo से `400 Bad Request`.** लगभग हमेशा एक: (a) आपकी शीट में एक कस्टम एट्रिब्यूट अभी तक Brevo में मौजूद नहीं है, पहले बनाएँ; (b) JSON एस्केपिंग बग, सेल वैल्यूज़ में कोट्स या बैकस्लैश जो एस्केप नहीं हुए। कोड में `EscapeJson` फ़ंक्शन स्टैंडर्ड मामलों को हैंडल करता है; यदि आपके डेटा में अजीब कैरेक्टर्स हैं, तो `payload` को Immediate विंडो (`Debug.Print payload`) पर लॉग करें और जाँचें।

**`401 Unauthorized`.** ग़लत हेडर। यह `api-key` है (छोटे अक्षर, हाइफ़न), `Authorization` नहीं। मैक्रो सही वाला उपयोग करता है, लेकिन यदि आपने कहीं और से स्निपेट कॉपी किया है, तो डबल-चेक करें।

**Excel बड़े इम्पोर्ट्स पर फ़्रीज़ हो जाता है.** मैक्रो UI थ्रेड पर सिंक्रोनस्ली चलता है। 50,000+ रोज़ के लिए, आप Excel को 10-30 सेकंड के लिए हैंग देखेंगे जबकि यह JSON बनाता है और Brevo पर इंतज़ार करता है। या तो स्वीकार करें, या `MSXML2.XMLHTTP` को इसके async वैरिएंट पर स्विच करें, लेकिन उस स्केल पर आप Power Automate में बेहतर हैं (अगला सेक्शन)।

## जब VBA पर्याप्त नहीं है: Office Scripts + Power Automate

VBA शेड्यूल्ड क्लाउड सिंक नहीं कर सकता। यदि आपको चाहिए:

- वर्कबुक हर घंटे Brevo के साथ सिंक हो बिना कोई इसे खोले
- वर्कबुक OneDrive/SharePoint पर, वेब से एडिट किया गया
- एक IT डिपार्टमेंट जो डेस्कटॉप मैक्रोज़ को बैन करता है

…तो आप **Office Scripts** (Apps Script का Microsoft क्लाउड समतुल्य) प्लस **Power Automate** (उनकी शेड्यूलिंग और HTTP लेयर) चाहते हैं।

विभाजन: Office Scripts शीट पढ़ता है और कॉन्टैक्ट डेटा लौटाता है। Power Automate उस डेटा को लेता है और एक ट्रिगर पर Brevo पर पोस्ट करता है।

**Office Script** (वेब के लिए Excel -> **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 फ़्लो**:

1. **Trigger**: *Recurrence* (हर 1 घंटा), या मैनुअल बटन, या “When a row is modified” यदि आप परिवर्तन-संचालित सिंक चाहते हैं।

2. **Action**: *Excel Online -> Run script*, इसे अपनी वर्कबुक और ऊपर की स्क्रिप्ट पर पॉइंट करें। इसकी रिटर्न वैल्यू को `contacts` के रूप में सेव करें।

3. **Action**: *HTTP* (यह प्रीमियम कनेक्टर है, नीचे लाइसेंसिंग नोट देखें)।

   - 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* -> यदि स्टेटस कोड 202 नहीं है, तो Teams/ईमेल अलर्ट भेजें।

**लाइसेंसिंग वास्तविकता जाँच**: *HTTP* एक्शन एक Power Automate प्रीमियम कनेक्टर है। Microsoft 365 Business Basic/Standard प्लांस पर आपको स्टैंडर्ड कनेक्टर्स मिलते हैं लेकिन प्रीमियम नहीं। सबसे सस्ता वर्कअराउंड है **Power Automate Premium** ऐड-ऑन (~$15/उपयोगकर्ता/महीना लेखन के समय), या HTTP को एक छोटे Azure Function में ले जाएँ जिसे स्टैंडर्ड फ़्लो कॉल कर सकता है। यदि आप पहले से ही Premium के साथ E3/E5 पर हैं, तो आप तैयार हैं।

यह मुख्य कारण है कि Apps Script की कहानी क्लीनर है: Apps Script का `UrlFetchApp` मुफ़्त और अप्रतिबंधित है, जबकि Microsoft समतुल्य नेटवर्क कॉल को पेड कनेक्टर टियर के पीछे रखता है।

## VBA बनाम Office Scripts बनाम Apps Script: कब क्या चुनें

| ज़रूरत | सर्वोत्तम विकल्प |
| --- | --- |
| एक वर्कबुक में एक-क्लिक बटन जिसे आपकी टीम पहले से ही रोज़ खोलती है | **VBA मैक्रो** (यह गाइड, ऊपरी आधा) |
| OneDrive/SharePoint पर वर्कबुक, हर घंटे ऑटो-सिंक | **Office Scripts + Power Automate** (HTTP के लिए Premium चाहिए) |
| केवल Mac Excel, VBA उपयोग नहीं कर सकते | **Office Scripts + Power Automate** |
| डेटा Google Sheets में रहता है, Excel में नहीं | **[Apps Script](https://tajo.io/hi/blog/import-google-sheet-contacts-to-brevo-apps-script)** (मुफ़्त, बिल्ट-इन शेड्यूल्ड ट्रिगर्स) |
| वन-ऑफ़ इम्पोर्ट, फिर कभी ज़रूरत नहीं | **Save As -> CSV** और [CSV इम्पोर्ट स्क्रिप्ट](https://tajo.io/hi/blog/import-csv-contacts-to-brevo-with-a-script) का उपयोग करें |
| 10 MB से बड़ी फ़ाइल से बल्क इम्पोर्ट | **`fileUrl` के साथ CSV**, [CSV गाइड](https://tajo.io/hi/blog/import-csv-contacts-to-brevo-with-a-script#files-larger-than-10-mb-use-fileurl) देखें |

## यह Zapier / नो-कोड प्लेटफ़ॉर्मस से बेहतर क्यों है

बार-बार होने वाली Excel-to-Brevo जॉब के लिए, थर्ड-पार्टी ऑटोमेशन टूल्स (Zapier, Make, n8n) प्रति-टास्क चार्ज करते हैं और आपके डेटा और Brevo के बीच एक थर्ड पार्टी डालते हैं। VBA दृष्टिकोण की कोई चालू लागत नहीं है, कोई थर्ड-पार्टी डेटा फ़्लो नहीं है, और यह फ़ाइल के अंदर रहता है, जब वर्कबुक चलती है, तो इंटीग्रेशन इसके साथ चलता है। Office Scripts + Power Automate समान है लेकिन Microsoft थर्ड पार्टी के रूप में (आपके स्टैक में पहले से ही है यदि आप M365 पर हैं)।

Brevo `POST /v3/contacts/import` एंडपॉइंट का पूरा बिंदु है कि आपको ग्लू प्लेटफ़ॉर्म की आवश्यकता नहीं है, आपके टूल्स पहले से ही जानते हैं कि HTTP रिक्वेस्ट कैसे करें।

## आगे पढ़ने के लिए

- [Brevo API: Import contacts रेफ़रेंस](https://developers.brevo.com/reference/import-contacts)
- [Microsoft Office Scripts ओवरव्यू](https://learn.microsoft.com/en-us/office/dev/scripts/overview/excel)
- [Power Automate HTTP कनेक्टर](https://learn.microsoft.com/en-us/connectors/webcontents/) (Premium)
- [Google Sheets के लिए Apps Script समतुल्य](https://tajo.io/hi/blog/import-google-sheet-contacts-to-brevo-apps-script)
- [स्क्रिप्ट-आधारित CSV/Excel इम्पोर्ट (Python, Node.js, cURL)](https://tajo.io/hi/blog/import-csv-contacts-to-brevo-with-a-script)

## अक्सर पूछे जाने वाले प्रश्न

**क्या VBA मैक्रो वास्तव में Excel के अंदर से Brevo के API को कॉल कर सकता है?**

हाँ। VBA MSXML2.XMLHTTP के माध्यम से HTTP रिक्वेस्ट कर सकता है, जो हर मॉडर्न Windows इंस्टॉल के साथ आता है। मैक्रो api.brevo.com/v3/contacts/import पर JSON पोस्ट करता है, वही एंडपॉइंट जिसे Python या Node स्क्रिप्ट हिट करेगी। Mac Excel भी इसे Office Scripts + Power Automate के माध्यम से कर सकता है, लेकिन डेस्कटॉप Mac VBA नहीं कर सकता (कोई MSXML नहीं)।

**क्या मैं इसे Apps Script टाइम ट्रिगर्स की तरह शेड्यूल पर चला सकता हूँ?**

अकेले VBA से नहीं, Application.OnTime के फ़ायर होने के लिए Excel खुला होना चाहिए। अनअटेंडेड शेड्यूल्ड सिंक के लिए आपके पास दो विकल्प हैं: (1) Windows Task Scheduler जो वर्कबुक खोलता है और मैक्रो चलाता है, या (2) Power Automate शेड्यूल्ड फ़्लो द्वारा ट्रिगर किए गए Office Scripts (इस गाइड में बाद में कवर किया गया)।

**क्या VBA सुरक्षित है? मेरी कंपनी मैक्रोज़ को ब्लॉक करती है।**

VBA मैक्रोज़ फ़ाइल-सिस्टम और रजिस्ट्री एक्सेस के साथ चलते हैं, इसलिए उन्हें डिफ़ॉल्ट रूप से ब्लॉक करना एक समझदार पॉलिसी है। इसके आसपास दो रास्ते: (1) मैक्रो को कोड-साइनिंग सर्ट के साथ साइन करें और वर्कबुक को Trusted Location में रखें, या (2) पूरी तरह से VBA को छोड़ दें और Office Scripts का उपयोग करें (TypeScript, सैंडबॉक्स्ड, कोई फ़ाइल-सिस्टम एक्सेस नहीं)। Office Scripts मॉडर्न Microsoft-समर्थित रास्ता है।

**यह Google Apps Script दृष्टिकोण से कैसे तुलना करता है?**

Apps Script सेट-एंड-फ़ॉरगेट के करीब है, Google के क्लाउड में चलता है, बिल्ट-इन शेड्यूल्ड ट्रिगर्स, कोई Excel/Power Automate लाइसेंस नहीं। VBA ऑफ़लाइन काम और एक वर्कबुक से एक-क्लिक मैनुअल सिंक के लिए जीतता है जिसे आपकी टीम पहले से ही खुला रखती है। Office Scripts + Power Automate Microsoft साइड पर क्लाउड/शेड्यूल्ड समतुल्य है, लेकिन Power Automate को अक्सर आउटबाउंड HTTP के लिए पेड प्रीमियम कनेक्टर की आवश्यकता होती है।

## संबंधित लेख

### [Brevo में CSV या Excel कॉन्टैक्ट्स को स्क्रिप्ट से कैसे इम्पोर्ट करें (Python, Node.js, cURL)](https://tajo.io/hi/blog/import-csv-contacts-to-brevo-with-a-script/)

30 अप्रैल 2026 · 6 मिनट पढ़ें

CSV → Brevo

### [Apps Script से Google Sheets कॉन्टैक्ट Brevo में आयात करें](https://tajo.io/hi/blog/import-google-sheet-contacts-to-brevo-apps-script/)

30 अप्रैल 2026 · 3 मिनट पढ़ें

Google Sheets → Brevo

### [Brevo डेटा एक्सपोर्ट और माइग्रेशन: अपना डेटा अंदर या बाहर कैसे ले जाएं](https://tajo.io/hi/blog/brevo-data-export-migration/)

19 अग॰ 2026 · 11 मिनट पढ़ें

8 खंड
