Comment extraire les données macro dans Excel / feuilles de calcul banner image

Implementation

How-To Guides

Comment extraire les données macro dans Excel / feuilles de calcul

Guide étape par étape pour extraire des données macroéconomiques en direct de FXMacroData dans Excel via Power Query ou VBA, et dans Google Sheets via Apps Script avec rafraîchissement automatique et mise en forme de ligne propre.

Également disponible en English

Les feuilles de calcul restent l'outil le plus courant pour l'analyse macro. Que vous préfériez Excel ou Google Sheets, tirer des données en direct de la banque centrale et des indicateurs économiques directement dans une cellule plutôt que de copier les valeurs à la main transforme une table statique en une aide à la décision auto-mise à jour. Ce guide vous montre comment connecter FXMacroData aux deux plateformes: Power Query et VBA pour Excel, et Apps Script pour Google Sheet. À la fin, chaque numéro de macro que vous aimez se rafraîchira automatiquement sans quitter votre feuille de calcul.

Ce que vous allez construire

  • Question de puissance dans Excel une requête qui récupère n'importe quel indicateur dans un tableau structuré en un clic
  • Excel VBA est en cours de développement une macro qui écrit des valeurs directement dans des cellules nommées, prêtes pour les formules et les graphiques
  • Le script de Google Apps est en cours de développement un script qui écrit des lignes dans un onglet Fiches et se rafraîchit sur un déclencheur basé sur le temps

Pré-requis

  • Clé de l'API FXMacroData inscrivez-vous à / souscrivez; les clés de niveau libre couvrent de nombreux indicateurs
  • Excel 2016+ est disponible (pour la requête de puissance) ou Le nombre de pages Power Query est intégré sur Windows/Mac et disponible en ligne
  • Compte Google tout compte ayant accès à Google Sheets et Apps Script (pas de logiciel supplémentaire requis)
  • Familiarité de base avec les formules Excel ou Google Sheets aucune formation en programmation nécessaire pour la section Power Query

PARTIE 1 EXCEL

Partie 1 Excel

Excel offre deux voies pour les données API en direct: Recherche de puissance (pas de code, parfait pour les analystes) et VBA (code-driven, idéal lorsque vous devez écrire des valeurs dans des cellules spécifiques ou déclencher la logique à partir d'un bouton ou d'une action).

- Passe 1 - Passez à la première étape

Étape 1 Comprendre la forme du point final de l'API

Chaque indicateur FXMacroData suit le même schéma REST. Une demande pour le taux directeur américain ressemble à ceci:

GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01

La réponse JSON est un objet plat avec un data - Je ne sais pas .

{
  "data": [
    { "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
    { "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
    { "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
  ]
}

Chaque disque porte un date (ANAN-MM-DD), un chiffre val, et le cas échéant un UTC de deuxième niveau announcement_datetime. Comme tous les indicateurs partagent cette forme, une fonction Power Query ou un assistant VBA peut les servir tous. Documents de l'APIJe suis désolé .


- Passe 2 - Je suis désolé

Étape 2 Excel Power Query: importation par connecteur Web

La source d'énergie est intégrée. D'après le Web connecteur peut consommer n'importe quel point de terminaison JSON REST sans aucun code.

  1. Dans Excel, cliquez sur Données → Obtenez des données → D'autres sources → Du WebJe suis désolé .
  2. Collez votre URL dans la boîte de dialogue remplacer YOUR_API_KEY avec votre clé réelle:
    https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
  3. Cliquez Ça va.. Power Query Navigator s'ouvre avec la structure JSON.
  4. Cliquez sur le données enregistrer dans le navigateur pour l'agrandir, puis cliquez Conversion vers le tableau Je suis désolé. Ça va.Je suis désolé .
  5. Utilisez le Élargir la colonne bouton (icône à flèche double) sur le Column1 En tête pour décomposer les enregistrements imbriqués en colonnes plates: dateJe suis désolé . valJe suis désolé . announcement_datetimeJe suis désolé .
  6. Cliquez Fermer et charger Pour écrire la table dans une nouvelle feuille.

Conseil: Récupérer automatiquement

Cliquez avec le bouton droit sur la table chargée → Tableau → Propriétés des données externes → activer Ressouffler les données lors de l'ouverture du fichier et de mettre un Récupérer toutes les N minutes Votre table de macro restera à jour chaque fois que vous ouvrez le classeur.


- Pas 3 - Je suis désolé

Étape 3 Excel Power Query: paramétrer avec une fonction réutilisable

Une fois que vous avez la requête d'indicateur unique fonctionnant, le promouvoir à une fonction M réutilisable de sorte que vous pouvez tirer n'importe quelle combinaison de monnaie / indicateur sans répéter les étapes de connecteur Web.

  1. Dans l'éditeur de requêtes, cliquez avec le bouton droit de votre requête dans le panneau de gauche → Créer une fonctionJe suis désolé .
  2. Nomme-le . FetchMacroDataJe suis désolé .
  3. Remplacer le corps par le code M ci-dessous:
// FetchMacroData — reusable Power Query function
// Parameters: currency (e.g. "usd"), indicator (e.g. "policy_rate"), apiKey, startDate
(currency as text, indicator as text, apiKey as text, startDate as text) =>
let
    url     = "https://fxmacrodata.com/api/v1/announcements/"
              & currency & "/" & indicator
              & "?api_key=" & apiKey
              & "&start=" & startDate,
    raw     = Json.Document(Web.Contents(url)),
    records = raw[data],
    tbl     = Table.FromList(records, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    expand  = Table.ExpandRecordColumn(tbl, "Column1",
                {"date", "val", "announcement_datetime"},
                {"Date", "Value", "AnnouncementDatetime"}),
    typed   = Table.TransformColumnTypes(expand, {
                {"Date",  type date},
                {"Value", type number}
              })
in
    typed
  1. Fermez l'éditeur de fonctions. requête vide pour chaque indicateur dont vous avez besoin:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")

Chaque requête se charge dans sa propre table. La fonction gère l'appel HTTP, l'analyse JSON, le renom de colonne et la conversion de type. Pour ajouter un nouvel indicateur, ajoutez une requête vide aucun assistant de connecteur n'est nécessaire. Trouvez des slugs d'indicateur sur le Documents de l'API pour n'importe quelle paire de devises.


- Passe 4 - Passez à la première étape

Étape 4 Excel VBA: écrire des valeurs directement dans les cellules

VBA est mieux adapté lorsque vous devez placer des valeurs dans des cellules nommées spécifiques, les lier à des formules existantes ou déclencher la mise à jour à partir d'un bouton ou d'une activation de livre de travail.

Ouvrez l' éditeur VBA (Alt+F11), insérer un nouveau module (Insérer → Module), et coller ce qui suit:

Option Explicit

' ─────────────────────────────────────────────────────────────────
' FetchLatestIndicator
' Returns the most recent val for a given currency/indicator.
' Requires a reference to "Microsoft XML, v6.0" (VBA Editor →
' Tools → References → tick "Microsoft XML, v6.0").
' ─────────────────────────────────────────────────────────────────
Function FetchLatestIndicator(currency As String, indicator As String, _
                               apiKey As String) As Variant
    Dim http     As New MSXML2.XMLHTTP60
    Dim url      As String
    Dim json     As String
    Dim dataArr  As Variant
    Dim parsed   As Object

    url = "https://fxmacrodata.com/api/v1/announcements/" & _
          LCase(currency) & "/" & LCase(indicator) & _
          "?api_key=" & apiKey & "&limit=1"

    http.Open "GET", url, False
    http.setRequestHeader "Accept", "application/json"
    http.Send

    If http.Status <> 200 Then
        FetchLatestIndicator = CVErr(xlErrValue)
        Exit Function
    End If

    ' ── Minimal JSON parser (no external library needed) ──────────
    ' Locate the first "val": number pattern after "data":[{
    Dim pos     As Long
    Dim valStr  As String
    json = http.responseText
    pos  = InStr(json, """val"":")
    If pos = 0 Then
        FetchLatestIndicator = CVErr(xlErrNA)
        Exit Function
    End If
    pos    = pos + Len("""val"":")
    valStr = Mid(json, pos, 20)
    ' Trim to the actual number (stop at comma, space, or brace)
    valStr = Split(Trim(valStr), ",")(0)
    valStr = Split(valStr, "}")(0)
    valStr = Trim(valStr)
    FetchLatestIndicator = CDbl(valStr)
End Function


' ─────────────────────────────────────────────────────────────────
' RefreshMacroDashboard
' Writes the latest value of several indicators into named cells.
' Define Named Ranges (Formulas → Name Manager) matching the keys
' used in the pairs array below.
' ─────────────────────────────────────────────────────────────────
Sub RefreshMacroDashboard()
    Dim apiKey As String
    apiKey = "YOUR_API_KEY"   ' ← replace with your key

    Dim pairs(5, 1) As String
    pairs(0, 0) = "usd" : pairs(0, 1) = "policy_rate"
    pairs(1, 0) = "eur" : pairs(1, 1) = "policy_rate"
    pairs(2, 0) = "gbp" : pairs(2, 1) = "policy_rate"
    pairs(3, 0) = "usd" : pairs(3, 1) = "inflation"
    pairs(4, 0) = "usd" : pairs(4, 1) = "unemployment"
    pairs(5, 0) = "usd" : pairs(5, 1) = "gdp"

    Dim i   As Integer
    Dim val As Variant
    Dim nm  As String
    For i = 0 To 5
        val = FetchLatestIndicator(pairs(i, 0), pairs(i, 1), apiKey)
        nm  = UCase(pairs(i, 0)) & "_" & pairs(i, 1)
        On Error Resume Next
        ThisWorkbook.Names(nm).RefersToRange.Value = val
        On Error GoTo 0
    Next i

    MsgBox "Dashboard updated — " & Now(), vbInformation, "FXMacroData"
End Sub

Comment brancher ça à un bouton ?

Dans la feuille de calcul, allez à Insérer → Formes, dessinez un rectangle arrondi, cliquez dessus → Assigner une macro → sélectionnez RefreshMacroDashboard. Un clic rafraîchit tous les indicateurs de votre tableau de bord. Vous pouvez également l'exécuter automatiquement sur le fichier ouvert en l'appelant à partir de Workbook_Open() Dans le ... ThisWorkbook module de code.


PARTIE 2 feuilles de calcul de Google

Partie 2 Google Sheets

Google Apps Script est un runtime JavaScript intégré directement dans Google Workspace. Il fonctionne côté serveur sur l'infrastructure de Google, donc il n'y a rien à installer. Vous appelez FXMacroData via UrlFetchApp et écrire les résultats sur la feuille de calcul avec SpreadsheetAppLes déclencheurs basés sur le temps vous permettent de planifier des mises à jour automatiques.

- Passe 5 - Je suis désolé

Étape 5 Ouvrez l'éditeur de scripts Apps

  1. Ouvrez . Les données sont fournies par le service de gestion des données. et créer une nouvelle feuille de calcul vierge.
  2. Cliquez Les extensions → les applicationsJe suis désolé .
  3. Renommer le projet en Le chargeur de FXMacroData (en haut à gauche).
  4. Supprimez le paramètre par défaut . myFunction() le détenteur de place.

Stockez votre clé API en toute sécurité

Allez voir . Paramètres du projet → Propriétés du script → Ajouter une propriétéAjouter une propriété nommée FXMACRODATA_API_KEY Le code ci-dessous le lit à l'exécution via PropertiesService.getScriptProperties() votre clé n'apparaît jamais dans le fichier de script.


- Pas 6 - Je suis désolé

Étape 6 Écrire l'aide à la recherche et l'écrivain de feuille

Insérez le code suivant dans Code.gsLes trois fonctions gèrent la récupération, la normalisation et l'écriture:

// ── Config ──────────────────────────────────────────────────────
const BASE_URL = 'https://fxmacrodata.com/api/v1';

// List of {currency, indicator} pairs to load.
// Add or remove rows to customise your dashboard.
const INDICATORS = [
  { currency: 'usd', indicator: 'policy_rate'  },
  { currency: 'usd', indicator: 'inflation'    },
  { currency: 'usd', indicator: 'unemployment' },
  { currency: 'eur', indicator: 'policy_rate'  },
  { currency: 'gbp', indicator: 'policy_rate'  },
  { currency: 'aud', indicator: 'policy_rate'  },
];


// ── Fetch helper with retry ─────────────────────────────────────
/**
 * Fetches the latest N records for a currency/indicator pair.
 * Retries up to maxRetries times with exponential back-off.
 *
 * @param {string} currency   - e.g. 'usd'
 * @param {string} indicator  - e.g. 'policy_rate'
 * @param {string} apiKey
 * @param {number} limit      - number of records to return (default 12)
 * @param {number} maxRetries
 * @returns {Array} array of {date, val, announcement_datetime} objects
 */
function fetchIndicator(currency, indicator, apiKey, limit = 12, maxRetries = 3) {
  const url = `${BASE_URL}/announcements/${currency}/${indicator}`
            + `?api_key=${apiKey}&limit=${limit}`;

  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      const resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
      if (resp.getResponseCode() === 200) {
        return JSON.parse(resp.getContentText()).data || [];
      }
    } catch (e) {
      if (attempt < maxRetries - 1) {
        Utilities.sleep(Math.pow(2, attempt) * 1000); // 1 s, 2 s, 4 s
      }
    }
  }
  return [];
}


// ── Sheet writer ────────────────────────────────────────────────
/**
 * Writes all indicator rows to a sheet named 'MacroData'.
 * Creates the sheet if it does not exist; clears it on each run
 * so stale rows are removed.
 */
function refreshMacroData() {
  const apiKey = PropertiesService.getScriptProperties()
                                  .getProperty('FXMACRODATA_API_KEY');
  if (!apiKey) {
    throw new Error('FXMACRODATA_API_KEY script property is not set.');
  }

  const ss        = SpreadsheetApp.getActiveSpreadsheet();
  let   sheet     = ss.getSheetByName('MacroData');
  if (!sheet) {
    sheet = ss.insertSheet('MacroData');
  }
  sheet.clearContents();

  // Header row
  const headers = ['Currency', 'Indicator', 'Date', 'Value', 'AnnouncementDatetime'];
  sheet.appendRow(headers);

  // Style header
  const headerRange = sheet.getRange(1, 1, 1, headers.length);
  headerRange.setBackground('#1e3a5f');
  headerRange.setFontColor('#ffffff');
  headerRange.setFontWeight('bold');

  // Data rows
  INDICATORS.forEach(({ currency, indicator }) => {
    const records = fetchIndicator(currency, indicator, apiKey);
    records.forEach(r => {
      sheet.appendRow([
        currency.toUpperCase(),
        indicator,
        r.date,
        r.val,
        r.announcement_datetime || ''
      ]);
    });
  });

  // Auto-resize columns for readability
  sheet.autoResizeColumns(1, headers.length);
}

- Pas 7 - Je suis désolé

Étape 7 Exécuter et vérifier

  1. Cliquez sur le Enregistrer icône (disque dur) dans la barre d'outils de l'éditeur.
  2. Sélectionnez refreshMacroData dans le menu déroulant de la fonction à côté du bouton Exécuter (▶).
  3. Cliquez On court !. La première exécution demande l' autorisation d' accéder à la feuille de calcul et de faire des demandes HTTP externes cliquez Examiner les autorisations → AutoriserJe suis désolé .
  4. Revenez à la feuille de calcul. Les données macro devrait maintenant contenir des lignes comme:
Monnaie Indicateur Date de la mise en service Valeur Annonce Date et heure
USD taux de référence Le 19 mars 2025 4,25 Je suis désolé.
USD inflation Le 12 mars 2025 2.8 Je suis désolé.
USD le chômage Le 5 mars 4.1 Les produits Je suis désolé.

- Passe 8 - Je suis désolé

Étape 8 Planifier la mise à jour automatique avec un déclencheur

Une détente à commande temporelle . refreshMacroData sur un calendrier sans aucune action manuelle.

  1. Dans l'éditeur de scripts Apps, cliquez sur le Les déclencheurs l'icône (horloge) dans la barre latérale gauche.
  2. Cliquez + Ajouter le déclencheur (en bas à droite).
  3. Je suis prêt . Choisissez la fonction à exécuter Je suis désolé. refreshMacroDataJe suis désolé .
  4. Je suis prêt . Sélectionnez la source d'événement Je suis désolé. Le temps qui passeJe suis désolé .
  5. Je suis prêt . Sélectionnez le type de déclencheur basé sur le temps Je suis désolé. Températeur de jourJe suis désolé .
  6. Je suis prêt . Sélectionnez l' heure de la journée → par exemple 7h à 8h (avant le tournoi européen).
  7. Cliquez EnregistrerLe déclencheur apparaît dans la liste des déclenchements.

Conseil: déclenchement horaire pour la surveillance du jour de sortie

Les jours où les émissions ont un impact important Indice de consommation des États-Unis, PNB ou décision de la banque centrale éteignez le déclencheur sur Télécommande à l'heure → toutes les heures La feuille de calcul capture la nouvelle lecture dès que l'API est mise à jour (généralement quelques secondes après la sortie officielle). inflation Je suis désolé . les effectifs non agricoles les terminaux transportent le deuxième niveau announcement_datetime Les valeurs sont calculées en fonction des données de base, afin que vous puissiez déterminer exactement quand chaque lecture a été publiée.


- Pas 9 - Je suis désolé .

Étape 9 Extraire la dernière valeur dans n'importe quelle cellule avec une fonction personnalisée

Ajouter la fonction ci-dessous à Code.gs si vous voulez référencer les valeurs macro directement dans les formules de cellules comme GOOGLEFINANCE() mais pour les données de banque centrale:

/**
 * Custom Sheets function: returns the latest value for a currency/indicator.
 *
 * Usage in a cell:  =FXMD("usd","policy_rate")
 *
 * @param {string} currency   e.g. "usd"
 * @param {string} indicator  e.g. "policy_rate"
 * @customfunction
 */
function FXMD(currency, indicator) {
  const apiKey  = PropertiesService.getScriptProperties()
                                   .getProperty('FXMACRODATA_API_KEY');
  const records = fetchIndicator(currency, indicator, apiKey, 1);
  if (!records || records.length === 0) return null;
  return records[0].val;
}

Après enregistrement, tapez =FXMD("usd","policy_rate") dans n'importe quelle cellule. Sheets appelle la fonction, récupère de l'API, et renvoie la valeur actuelle. Combinez-la avec les étiquettes de devises dans les cellules adjacentes pour créer un panneau de résumé compact.

Indicateurs soutenus

Toutes les balises d'indicateur du catalogue FXMacroData fonctionnent policy_rateJe suis désolé . inflationJe suis désolé . unemploymentJe suis désolé . gdpJe suis désolé . pmiJe suis désolé . retail_sales, et bien d'autres. Documents de l'API pour la liste complète par monnaie, ou utilisez le Tableau de bord FX Pour explorer visuellement les indicateurs.


- Résumé

Résumé

Vous avez connecté FXMacroData à Excel et à Google Sheets:

  • Question de puissance dans Excel une fonction M paramétrable qui charge tout indicateur dans un tableau structuré et le rafraîchit sur le fichier ouvert.
  • Excel VBA est en cours de développement une macro qui écrit la dernière valeur de chaque indicateur dans des cellules nommées, attribuables à un bouton.
  • Le script de Google Apps est en cours de développement Je suis désolé . refreshMacroData() fonction qui crée un onglet complet de MacroData, plus un =FXMD() formule personnalisée pour les recherches par cellule, toutes deux actualisées automatiquement sur un déclencheur basé sur le temps.

À partir de là, envisagez de superposer plus d'indicateurs par exemple, en ajoutant inflation de base l'inflation globale, ou la baisse de la PMI La forme cohérente du point d'extrémité signifie que chaque addition est un changement d'une ligne à la croissance de la population. INDICATORS l'appel de la fonction M.

Blogroll