Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2022年04月24日] [更新 2022年04月24日]* Delphi 一般・その他 [未分類 - OS の操作等]
HTML でワードの文書やエクセルのブックを開く
動作確認等 Windows 10 ビルド 19042 Pro 64 bit + Microsoft Office 2019
Windows 10 以降、Microsoft Office 2010(SP2) 以降用
[整理番号 - 1750]







HTML  でワードの文書やエクセルのブックを開く


Windows 10 では、Microsoft Office をインストールすると、Office URI スキームが使用できます。URI スキームを使用すると、ウェブページからワードの文書やエクセルのブック、あるいは PowerPoint のファイルを開いて表示する HTML コードが書けます。


URI スキームのリンクをクリックすると、下図のようなダイアログがウェブブラウザの画面上部中央に現れます。下図は Google Chrome の例です。[Word を開く] をクリックするとワードの文書が表示されます。
IE 11 は、このダイアログが現れません。



図1
ブラウザの画面上部中央に現れるダイアログ
  • Google Chrome の場合
  • [Word を開く] をクリックして開く

下図は、今回動作確認したウェブブラウザの一覧です。全て 64 ビット版です。



図2
動作確認したブラウザとそのバージョン
  • Microsoft Edge は Chromium 版

本ページのテストで使用しているファイルは、当サイトのサーバにあります。当然ですが、ネットワークコンピュータの共有フォルダ内のファイルとは違い、上書き保存はできません。上書き保存しようとすると、ファイルの保存ダイアログが現れます。
ウェブサーバのファイルを自由に書き換えることができてしまったら問題です。サイトの管理者であっても、サイトの記事の書き換えには ID とパスワードによるログインが必要です。


[備考]
メジャーなブラウザでは、リンク部をマウス右ボタンクリックして [K] キー押下すると、リンク先のファイルを、名前を付けて保存できます。これは、[名前を付けてリンク先を保存] の機能です。
URI スキームのリンクでは、この機能は使用できません。
IE 11 では、[対象をファイルに保存] で保存できますが、破損ファイルとなります。





01_ ウェブページのリンクをクリックしたら開く


下のリンクをクリックすると、ワードの文書またはエクセルのブックを表示します。

ワードの文書を開く
エクセルのブックを開く

このようなリンクは次のように実装します。
以下のコードをコピーして、拡張子が htm または html のファイルとして保存します。ファイルは UTF-8 で保存します。Windows 10 のメモ帳のデフォルトの保存文字コードは UTF-8 です。コードをメモ帳に貼り付ければそのまま保存できます。
保存したら、HTML ファイルをブラウザで表示して動作を確認できます。
右端が欠けている行がありますが、[copy code] でコピーすれば欠けることはありません。


リスト1
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <a href="ms-word:ofv|u|http://mrxray.on.coocan.jp/Others/WordTest.docx">ワードの文書を開く</a><br>
  <a href="ms-excel:ofv|u|http://mrxray.on.coocan.jp/Others/ExcelTest.xlsx">エクセルのブックを開く</a><br>
</body>
</html>


ローカルコンピュータのワードの文書やエクセルのブックの場合は、リンクの URL 部分を以下のようにします。これは、ドライブ D の testdir フォルダ内のワード文書のリンクとなっています。たとえテストでも、ドライブ直下にはファイルを置かないようにします。



ms-word:ofe|u|file:///d:/testdir/WordTest.docx


ネットワークコンピュータのファイルの場合、リンク先は、例えば以下のようになります。Vm-Win7-32 がコンピュータ名です。000 は、共有フォルダ名です。



ms-word:ofe|u|file://Vm-win7-32/000/WordTest.docx


Office URI スキームのコマンド ofe は、編集モードで、ofv は読み出し用で開くことを意味します。コマンド u は url 指定の意味です。コマンドは | で区切ります。





02_ ウェブページのボタンをクリックしたら開く


下のボタンをクリックすると、ワードの文書またはエクセルのブックを表示します。





これは、例えば以下のようなコードで実現できます。
以下のコードをコピーして、拡張子が htm または html のファイルとして保存します。ファイルは UTF-8 で保存します。Windows 10 のメモ帳のデフォルトの保存文字コードは UTF-8 です。コードをメモ帳に貼り付ければそのまま保存できます。
保存したら、HTML ファイルをブラウザで表示して動作を確認できます。



リスト2
<html>
<head>
  <meta charset="utf-8">
  <script type="text/JavaScript"> 
    function openoffice(scheme, filename) {
      var uri = scheme + "ofv|u|http://mrxray.on.coocan.jp/Others/" + filename;
      document.location.href = uri;
    }      
  </script>   
</head>
<body>
  <input type="button" value="ワードの文書" 
    onclick= "openoffice('ms-word:', 'WordTest.docx')"><br>
  <br>
  <input type="button" value="エクセルのブック" 
    onclick= "openoffice('ms-excel:', 'ExcelTest.xlsx')">
</body>
</html>




03_ Office URI スキームを使用しない場合


URI スキームを使用しない場合、リンクをクリックした時の動作、あるいはブラウザにおける操作は、ファイルの種類とブラウザによって。あるいはブラウザの設定によって異なります。
メジャーなブラウザでは、ウェブサーバのページからは、セキュリティ上、ローカルファイルを操作できないようになっています。したがって、URI スキームの指定がない場合、ウェブサーバのページからは、ローカルコンピュータのワードの文書やエクセルのブックは開けません。

URI スキームを使用すれば、ウェブサーバのファイルでもローカルなファイルでも、Microsoft Office のファイルの種類に関係なく同じ操作で開けます。