When exporting a macro, a keyed array is used, which makes it difficult when we want to reorder macros in a text editor for example.
Here is a snippet to export macros in an unkeyed array :

function macro_get_macro() {
  $subs = variable_get('macro_submissions', array());
  $string = '';
  foreach ($subs as $key => $form) {
    $string .= '$macro[] = array('."\n";
    $string .= "  'form_id' => " . var_export($form['form_id'], TRUE) . ",\n";
    $string .= "  'path' => " . var_export($form['path'], TRUE) . ",\n";
    $string .= "  'values'  => " . var_export(_macro_recursively_convert_objects_to_arrays((array) $form['values']), TRUE) . ",\n";
    // Add multistep support.
    if ($form['storage']) {
      $string .= "  'storage'  => " . var_export(_macro_recursively_convert_objects_to_arrays((array) $form['storage']), TRUE) . ",\n";
    }
    // the form parameters are being used here.
    array_shift($form['parameters']);
    $string .= "  'parameters'  => " . var_export(serialize($form['parameters']), TRUE) . ",\n";
    $string .= ");\n";
  }

  return $string;
}

Sorry I'm lazy to make a patch.