「OfficeJS Snippet Explorerを使って新しいOffice アドインを体験する」で紹介していますが、新しくなったJavaScript API(Word v2 JavaScript API / Excel v2 JavaScript API)ではコードの書き方もシンプルになり、できることもかなり増えました。
今回はWordAPIで新たに追加されたRangeオブジェクトのinsertInlinePictureFromBase64メソッドを使って、ローカルに保存された画像ファイルをWord文書に挿入するコードを紹介します。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>Sample</title>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.js"></script>
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script>
Office.initialize = function(reason){
$(document).ready(function(){
if(Office.context.requirements.isSetSupported("WordApi", 1.2)){
$("#iptImg").change(insertPicture);
}else{
console.log("This code requires Word 2016 or greater.");
}
});
};
function insertPicture(){
if(!this.files.length){return;}
var file = this.files[0];
var fr = new FileReader();
fr.onload = function(event){
var base64 = event.target.result.split(",")[1];
Word.run(function(ctx){
var rng = ctx.document.getSelection();
rng.insertInlinePictureFromBase64(base64, "Start");
return ctx.sync().then(function(){
console.log("done.");
});
}).catch(function(error){
console.log("Error: " + error);
if(error instanceof OfficeExtension.Error){
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}
fr.readAsDataURL(file);
}
</script>
</head>
<body>
<p><input id="btnTest" type="button" value="Test"></p>
<p><input id="iptImg" type="file"></p>
<p><textarea id="result"></textarea></p>
</body>
</html>
上記コードを実行すると、下図のようにinput type=”file”(iptImg)で選択した画像ファイルがWord文書の選択位置に挿入されます。

上記コードでやっていることは、File APIでローカル画像ファイルをbase64文字列として取得、取得した文字列をinsertInlinePictureFromBase64メソッドに渡して文書に挿入するという、非常にシンプルなものです。
VBAで同じことをやろうと思ったら、
Public Sub Sample()
With Application.FileDialog(msoFileDialogFilePicker)
If .Show Then Selection.InlineShapes.AddPicture .SelectedItems(1)
End With
End Sub
上記のようにほんの数行で出来てしまう事なので、これでもまだ冗長に思うかもしれませんが、以前のOffice アドインに比べたら大きな進歩です。
日々進化しているOffice アドイン、興味がある方は是非お試しください。
参考Webページ
- Deep Dive into Office Word Add-ins
- https://github.com/OfficeDev/TrainingContent/blob/master/O3652/O3652-2%20Deep%20Dive%20in%20Office%20Word%20Add-ins/Lab.md
- Deep Dive into Office Excel Add-ins
- http://dev.office.com/hands-on-labs/1544
- Word アドインのプログラミングの概要
- https://msdn.microsoft.com/ja-jp/library/mt616486.aspx
- Office のホストと API の要件を指定する
- https://msdn.microsoft.com/ja-jp/library/dn535871.aspx
- Office アドインの要件セット
- https://msdn.microsoft.com/ja-jp/library/mt590206.aspx
- Range オブジェクト (JavaScript API for Word)
- https://msdn.microsoft.com/ja-jp/library/mt616492.aspx



















この記事へのコメントはありません。