---
title: "ایک VBA میکرو کے ساتھ Excel گاہکوں کو Brevo میں کیسے پش کریں (اور Office Scripts متبادل)"
description: "ایک ورکنگ VBA میکرو جو ایک کلک میں Excel شیٹ سے گاہکوں کو Brevo کے API پر پوسٹ کرتا ہے۔ اس کے علاوہ، کب Office Scripts + Power Automate کا استعمال کریں، اور Google Apps Script سیٹ اپ کے مقابلے میں ٹریڈ آفس۔"
url: https://tajo.io/ur/blog/import-excel-contacts-to-brevo-with-vba-macro/
markdown: https://tajo.io/ur/blog/import-excel-contacts-to-brevo-with-vba-macro.md
lang: ur-PK
author: "Set Noa"
author_url: https://tajo.io/ur/set-noa/
published: 2026-04-30
updated: 2026-05-05
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, 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}
---

[ڈیٹا سنک](https://tajo.io/ur/blog/?category=data-sync)

# ایک 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/ur/blog/import-excel-contacts-to-brevo-with-vba-macro/#%D9%85%DB%8C%DA%A9%D8%B1%D9%88-%DA%A9%DB%8C%D8%A7-%DA%A9%D8%B1%D8%AA%D8%A7-%DB%81%DB%92)

| ماخذ فیلڈ | منزل فیلڈ | نمونہ قدر |
| --- | --- | --- |
| `email` | `EMAIL` | `alex@example.com` |
| `firstName` | `FIRSTNAME` | `Alex` |
| `company` | `COMPANY` | `Example Co` |

آپ کے پاس Excel میں گاہک ہیں اور آپ انہیں Brevo میں چاہتے ہیں۔ تیز اور گندا جواب فائل کو `.csv` کے طور پر محفوظ کرنا اور اسے امپورٹ کرنا ہے، جو ایک بار کے لیے ٹھیک ہے۔ کسی بھی چیز کے لیے جو آپ بار بار کر رہے ہیں (ہفتہ وار سیلز ہینڈ آف، آپ کی ٹیم روزانہ اپڈیٹ کرنے والی ورک بک، ایک پارٹنر فہرست جو ریفریش ہوتی رہتی ہے)، آپ Excel کے اندر ایک بٹن چاہتے ہیں جو سنک کرے۔

یہ گائیڈ ان دو راستوں کا احاطہ کرتی ہے جو واقعی اس کے لیے معنی رکھتے ہیں:

1. **ورک بک میں ایمبیڈڈ ایک VBA میکرو**: کوئی لائسنسنگ نہیں، کوئی کلاؤڈ نہیں، آف لائن کام کرتا ہے، صارف کے بٹن پر کلک کرنے کے لمحے چلتا ہے۔ “Excel سے Brevo” کے تقریباً 80% کیسز کے لیے صحیح جواب۔
2. **Office Scripts + Power Automate**: VBA کے بجائے TypeScript، کلاؤڈ میں چلتا ہے، شیڈولڈ ٹریگرز کی حمایت کرتا ہے۔ صحیح جواب اگر ورک بک OneDrive/SharePoint میں رہتی ہے اور آپ بغیر نگرانی کے سنک چاہتے ہیں، لیکن Power Automate لائسنسنگ سے آگاہ رہیں۔

اگر آپ Google Sheets کا مساوی تلاش کر رہے ہیں، تو [Apps Script پر ہمراہ مضمون](https://tajo.io/ur/blog/import-google-sheet-contacts-to-brevo-apps-script) دیکھیں۔ اور اگر آپ صرف اپنے لیپ ٹاپ پر اسکرپٹ سے ایک شاٹ CSV امپورٹ چاہتے ہیں، تو [CSV امپورٹ گائیڈ](https://tajo.io/ur/blog/import-csv-contacts-to-brevo-with-a-script) میں Python، Node.js، اور cURL ورژنز ہیں۔

## میکرو کیا کرتا ہے

جب صارف شیٹ پر “Sync to Brevo” بٹن پر کلک کرتا ہے:

1. ایکٹو ورک شیٹ سے ہر قطار پڑھیں (پہلے ہیڈر قطار، فی قطار ایک گاہک)۔
2. Brevo کے `jsonBody` پیرامیٹر کے لیے شکل والا JSON ارے بنائیں۔
3. اسے ورک بک کی محفوظ کردہ API کلید کے ساتھ `https://api.brevo.com/v3/contacts/import` پر POST کریں۔
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 کلید کنفیگر کریں

`ConfigureApiKey` کو ایک بار چلائیں۔ یا تو:

- VBA ایڈیٹر میں، `ConfigureApiKey` سب کے اندر کہیں بھی کلک کریں اور `F5` دبائیں، یا
- Excel میں، **Developer → Macros**، `ConfigureApiKey` چنیں، **Run**۔

اپنی `xkeysib-...` کلید پیسٹ کریں۔ میکرو اسے ورک بک کے اندر ایک کسٹم ڈاکومنٹ پراپرٹی کے طور پر محفوظ کرتا ہے، یہ سورس کوڈ میں نہیں ہے، رجسٹری میں نہیں ہے، اور فائل کے ساتھ سفر کرتا ہے (تو آگاہ رہیں: اگر آپ .xlsm کسی کو ای میل کرتے ہیں، تو API کلید اس کے ساتھ جاتی ہے)۔

اگر آپ کلید کو ورک بک سے باہر کہیں رکھنا چاہتے ہیں، تو اسٹوریج کو 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` کے تحت لکھتا ہے (فی صارف، فی ورک بک نہیں)۔ اسے استعمال کریں اگر متعدد ورک بکس کو ایک کلید شیئر کرنی چاہیے، یا اگر آپ کلید کو فائل میں نہیں چاہتے۔

## مرحلہ 5: شیٹ پر ایک بٹن شامل کریں

یہ وہ ہے جو اسے غیر تکنیکی صارفین کے لیے ایک کلک کا تجربہ بناتا ہے۔

**Insert → Shapes → Rectangle**، شیٹ پر ایک ڈراپ کریں، اسے “Sync to Brevo” کا لیبل دیں۔ شکل پر دائیں کلک کریں → **Assign Macro** → `SyncSheetToBrevo` چنیں۔ ہو گیا۔

یا، زیادہ پالیشڈ UI کے لیے، Office Custom UI Editor کے ذریعے ایک کسٹم ربن ٹیب شامل کریں، لیکن زیادہ تر اندرونی ٹولز کے لیے، شکل-بطور-بٹن کافی ہے۔

## مرحلہ 6: اسے چلائیں

بٹن پر کلک کریں۔ میکرو قطاریں پڑھتا ہے، انہیں بیچ کرتا ہے، ہر بیچ کو Brevo پر پوسٹ کرتا ہے، اور ایک خلاصہ پیغام باکس دکھاتا ہے۔ Brevo کا امپورٹ ایسنکرونس ہے، تو کامیابی کے پیغام کا مطلب ہے “Brevo نے بیچ قبول کر لیا”، اصل گاہک کی تخلیق سرور سائیڈ پر اگلے چند سیکنڈ میں ہوتی ہے۔ آپ کو Brevo سے ای میل خلاصہ ملے گا جب یہ ختم ہو جائے گا (جب تک کہ آپ نے `disableNotification: true` سیٹ نہ کیا ہو)۔

## عام پھندے

**بٹن کچھ نہیں کرتا اور کوئی ایرر نہیں ہے۔** میکروز غیر فعال ہیں۔ شیٹ کے اوپر پیلے سکیورٹی بار پر دیکھیں، **Enable Content** پر کلک کریں۔ اگر آپ کی تنظیم میکروز کو بلاک کرتی ہے، تو نیچے ٹرسٹ سینٹر / کوڈ سائننگ راستہ دیکھیں۔

**`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` کو اس کی ایسنک قسم پر سوئچ کریں، لیکن اس پیمانے پر آپ Power Automate (اگلا سیکشن) میں بہتر ہیں۔

## جب VBA کافی نہیں: Office Scripts + Power Automate

VBA شیڈولڈ کلاؤڈ سنک نہیں کر سکتا۔ اگر آپ کو ضرورت ہے:

- ورک بک ہر گھنٹے Brevo میں سنک ہو بغیر کسی کے کھولے
- ورک بک OneDrive/SharePoint میں ہو، ویب سے ایڈٹ ہو
- ایک IT ڈپارٹمنٹ جو ڈیسک ٹاپ میکروز پر پابندی لگاتا ہے

…تو آپ **Office Scripts** (Microsoft کا Apps Script کا کلاؤڈ مساوی) اور **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 Premium کنیکٹر ہے۔ Microsoft 365 Business Basic/Standard پلانز پر آپ کو معیاری کنیکٹرز ملتے ہیں لیکن پریمیم نہیں۔ سب سے سستا حل **Power Automate Premium** ایڈ آن ہے (لکھنے کے وقت فی صارف فی مہینہ تقریباً 15 USD)، یا HTTP کو ایک چھوٹے Azure Function میں منتقل کریں جسے معیاری فلو کال کر سکتا ہے۔ اگر آپ پہلے سے 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/ur/blog/import-google-sheet-contacts-to-brevo-apps-script)** (مفت، شیڈولڈ ٹریگرز بلٹ ان) |
| ون آف امپورٹ، کبھی دوبارہ ضرورت نہیں ہوگی | **Save As → CSV** اور [CSV امپورٹ اسکرپٹ](https://tajo.io/ur/blog/import-csv-contacts-to-brevo-with-a-script) استعمال کریں |
| 10 MB سے بڑی فائل سے بلک امپورٹ | **`fileUrl` کے ساتھ CSV**: [CSV گائیڈ](https://tajo.io/ur/blog/import-csv-contacts-to-brevo-with-a-script#files-larger-than-10-mb-use-fileurl) دیکھیں |

## یہ Zapier / no-code پلیٹ فارمز کو کیوں شکست دیتا ہے

ایک بار بار چلنے والی Excel سے Brevo جاب کے لیے، تیسرے فریق آٹومیشن ٹولز (Zapier، Make، n8n) فی ٹاسک چارج کرتے ہیں اور آپ کے ڈیٹا اور Brevo کے درمیان ایک تیسرا فریق رکھتے ہیں۔ VBA اپروچ کی صفر جاری لاگت ہے، کوئی تیسرا فریق ڈیٹا فلو نہیں، اور یہ فائل کے اندر رہتی ہے (جب ورک بک منتقل ہوتی ہے، تو انضمام اس کے ساتھ منتقل ہوتا ہے)۔ Office Scripts + Power Automate ملتا جلتا ہے لیکن Microsoft تیسرے فریق کے طور پر (اگر آپ M365 پر ہیں تو پہلے ہی آپ کے اسٹیک میں)۔

Brevo کے `POST /v3/contacts/import` اینڈ پوائنٹ کا پورا نکتہ یہ ہے کہ آپ کو گلو پلیٹ فارم کی ضرورت نہیں، آپ کے ٹولز پہلے ہی HTTP درخواستیں بنانا جانتے ہیں۔

## مزید پڑھنے کے لیے

- [Brevo API: گاہک امپورٹ کریں ریفرنس](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/ur/blog/import-google-sheet-contacts-to-brevo-apps-script)
- [اسکرپٹ پر مبنی CSV/Excel امپورٹ (Python، Node.js، cURL)](https://tajo.io/ur/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 کے لیے ادائیگی شدہ پریمیم کنیکٹر کی ضرورت ہوتی ہے۔

## متعلقہ مضامین

### [ایک اسکرپٹ (Python، Node.js، cURL) کے ساتھ CSV یا Excel گاہکوں کو Brevo میں کیسے امپورٹ کریں](https://tajo.io/ur/blog/import-csv-contacts-to-brevo-with-a-script/)

30 اپریل، 2026 · 7 منٹ پڑھیں

CSV → Brevo

### [Apps Script سے Google Sheets کانٹیکٹس Brevo میں امپورٹ کریں](https://tajo.io/ur/blog/import-google-sheet-contacts-to-brevo-apps-script/)

30 اپریل، 2026 · 3 منٹ پڑھیں

Google Sheets → Brevo

### [Brevo ڈیٹا ایکسپورٹ اور مائیگریشن: اپنا ڈیٹا اندر یا باہر کیسے لے جائیں](https://tajo.io/ur/blog/brevo-data-export-migration/)

19 اگست، 2026 · 12 منٹ پڑھیں

8 حصے
