Office アドイン

[Officeアドイン]ローカルの画像ファイルをWord文書に挿入する。

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文書の選択位置に挿入されます。

insertInlinePictureFromBase64_01

上記コードでやっていることは、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ページ

関連記事

  1. Office関連

    Office 2013 カスタマープレビュー版の「Spy Utility」

    たまたま見つけたWebページ「Office2013のデバッグ用ツールが…

  2. Office関連

    VBE用のCOMアドインをメモ帳で作ってみる。

    “Officeアプリケーション用のCOMアドインをVisual Stu…

  3. Office関連

    ガイドを追加するPowerPointマクロ

    PowerPointで図形の位置を調整するときに役立つガイド機能(ガイ…

  4. Office関連

    Word 2013の「個人用テンプレート」はどこ?

    Word 2010では、から「個人用テンプレート」(カスタム テンプレ…

  5. Office関連

    【2018年7月版】ソースコードを番号行付きのテーブルに変換するWordマクロ

    6年以上前、Wordに貼り付けたソースコードを番号付きのテーブルに変換…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP