Quantcast

Récemment, un de mes clients m’a demandé la possibilité de lui générer des fichiers Word personnalisés à partir de données de sa base Filemaker. J’ai donc cherché la possibilité de le faire, mais malheureusement, s’il est possible d’exporter des enregistrements de Filemaker vers Excel, il est actuellement impossible en natif d’exporter des éléments de Filemaker vers Microsoft Word. Il existe pourtant une astuce que je vais vous présenter ci-dessous.

filemaker-microsoft-word

Étape 1 : Créez votre fichier template au format rtf

Pour cela, rien de plus simple, créez votre fichier dans Microsoft Word, puis pensez bien à l’enregistrer au format Rich Text Document avec l’extension .rtf. Ce format développé par Microsoft a l’avantage d’être lu par tous les logiciels de traitements de texte et son contenu n’est autre qu’un ensemble de caractères sur lequel nous allons pouvoir faire des traitements.

C’est aussi lors de sa création que vous pouvez ajouter des variables que nous allons récupérer depuis la base Filemaker.

Dans notre exemple, nous mettons en variable les données du client qui sont dans l’entête du document en les « encadrant » par des pourcentages pour les retrouver facilement lors de la substitution de texte.

Étape 2 : Récupérer le contenu du template et l’intégrer dans la base Filemaker

Une fois votre fichier Rich Text Document créé avec Microsoft Word, il vous faut l’ouvrir avec un éditeur de texte (tel Notepad++ sur Windows ou TextWrangler sur macOS). Vous verrez alors votre document dans son encodage natif. Il vous suffit ensuite de copier tout le contenu de votre fichier dans une rubrique (ou une variable globale) pour qu’elle soit directement disponible dans Filemaker.

Étape 3 : Lancer le traitement

Pour terminer, il vous faut récupérer le contenu de la variable et faire vos substitutions :

Définir variable [ $result_docx ; Valeur: Substituer ( export::origin ; "%%CLIENT_NAME%%" ; "Emmanuel MACRON" ) ]

$result_docx est votre variable temporaire que nous allons utiliser pendant nos substitutions et export::origin est le contenu de votre fichier rtf au format brut. Dans notre exemple, nous allons remplacer %%CLIENT_NAME%% dans notre fichier par Emmanuel MACRON

Définir variable [ $desktop_fm ; Valeur: "file:" & Obtenir( CheminBureau ) & "facture.rtf" ]

Pour définir le chemin de votre fichier en prenant bien l’extension de fichier rtf.

Définir rubrique [ export::docx ; DecoderBase64 ( CoderBase64 ( $result_docx ); "facture.rtf" ) ]

L’astuce est de décoder et encoder le contenu de votre fichier pour qu’il soit interprétable en rtf et pour l’affecter à une rubrique conteneur

Exporter contenu de rubrique [ export::docx ; “$desktop_fm” ; Ouvrir automatiquement ]

Vous pouvez exporter le contenu et l’ouvrir avec Microsoft Word.

Conclusion

Avantages Inconvénients
  • Pas besoin de plugin
  • Facile à implémenter
  • Compatible OSX et Windows et tous supports
  • Fonctionne à partir de FM 13
  • Le fichier généré n’est pas un fichier docx (il s’agit d’un rtf)
  • Ne fonctionne pas avec des images
  • Ne prend pas en compte les caractères accentués

Fichiers exemples

Télécharger le fichier rtf utilisé pour cet exemple : fm_exemple.rtf

Télécharger la base de données Filemaker Exemple : export_microsoft_word.fmp12

Sources

https://schwarzsoftware.com.au/blogentry.php?id=10
http://www.filemakertoday.com/com/archive/index.php?t-11541.html
Autre solution avec Apple Script : http://layneshipley.mysyte.us/exporting-rtf-text-filemaker-field/
Génération de fichier docx simplifié avec Filemaker : https://www.briandunning.com/cf/1765