@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASPからWordファイルの操作

投稿者投稿内容
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-07-05 11:52
以前ASPからExcelを次のようにして、

---
Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=sample.xls;ReadOnly=False;"
Set cn = Server.CreateObject("ADODB.Connection")

With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=sample.xls;Extended Properties=""Excel 8.0; HDR=No;"""
.Open
End With
----

接続し、ファイル操作を行ったのですが、今度はWordに接続して「テンプレートのWordファイル」に内容を記入するよう操作を行いたいのですが、方法が良く分かりません。

また、WordファイルにADO接続するのではなく、差し込み印刷等の方法で印刷するのも考えましたが、こちらも実現には至っておりません。

いずれかの方法、または全く別の不法で、ASPからWordファイルにアクセスし、HPの入力内容を記述するための方法をご存知の方がいらっしゃられましたら、返信のほどよろしくお願いいたします

[ メッセージ編集済み 編集者: Hymm 編集日時 2005-07-05 16:10 ]
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-06 08:01
WORDにADODB経由で接続することは出来ないので、OLEオートメーションかVisual Studio Tools for Office(VSTO)を用いることになるでしょう。MS-WORDを制御している例は珍しいですが、同様の方法でExcelを操作している例はこの掲示板でも度々あります。

ただMS-WORDの機能を呼び出す実装の場合、複数のインスタンスが同時に起動したときなど動作に不安もあります。WORDに頼らない別の方法を検討した方が良いのではないかと思います。
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-07-06 13:41
ご回答有難うございました。
OLEオートメーション自体、よく理解していないため、おかしいことを言ってしまっているかもしれませんが、これを使用して問題を解決するためには、IISサーバ側にWordがインストールされていないと、
CreateObject("Word.Document")、またはCreateObject("Word.Application.11")
などの宣言時にエラーが発生すると思われますがどうでしょうか?

サーバ側にMicroSoft Officeをインストールする予定は今の所ありません。

Visual Studio Tools for Officeについては、まだ調べておりませんので、これから調べて回答します。
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2005-07-06 14:40
ASPでよければこんな感じでできます。
クライアントにワードがインストールされている必要があります。

<script language="VBScript">
<!--
option explicit

dim objWord,wordFile,myRange
dim objWordDoc,ret

set objWord = CreateObject("Word.Application")

wordFile = "TEST.doc"
objWord.Documents.Open(wordFile)
set objWordDoc = objWord.ActiveDocument
'objWord.Documents(wordFile).Activate
objWord.Visible = true

'ブックマークbookmark1に文字を追加
'set myRange = objWord.Documents(wordFile).Bookmarks("bookmark1").Range
set myRange = objWordDoc.Bookmarks("bookmark1").Range
myRange.text = "文字11111"

'objWord.ActiveDocument.Save
'objWordDoc.Save
'objWord.Documents.Close
'objWord.Quit
'set objWord = nothing
//-->
</script>
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-07-06 15:47
引用:

OpSさんの書き込み (2005-07-06 14:40) より:
ASPでよければこんな感じでできます。
クライアントにワードがインストールされている必要があります。



お返事有難うございました。
実行してみた所

引用:

set objWord = CreateObject("Word.Application")



の部分で、
「エラー:ActiveXコンポーネントはオブジェクトを作成できません。:'Word.Application'」
と表示されました。

これは、IIS側の設定をどのようにすれば、回避出来る現象でしょうか?
また、この構文でクライアントにWordがインストールされていないと動かないという点も良く分かりません。

このファイルをHtmlにして、クライアント上で実行すれば動くとは思いますが、IISサーバ上で処理を行う方法を探しています。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-07-06 16:03
問題解決の為の回答ではありませんが・・

引用:

サーバ側にMicroSoft Officeをインストールする予定は今の所ありません。


インストールしてなければ、サーバサイドでCreateObject()出来ない気がします・・
甕星さんもおっしゃっていますが、
サーバサイドでのOffice使用は、MS的には非推奨だったと思いますよ。

引用:

これは、IIS側の設定をどのようにすれば、回避出来る現象でしょうか?
また、この構文でクライアントにWordがインストールされていないと動かないという点も良く分かりません。

このファイルをHtmlにして、クライアント上で実行すれば動くとは思いますが、IISサーバ上で処理を行う方法を探しています。



ご自身が後段で記述されていますように、
クライアント上でVBScriptが実行されるわけですから、
クライアントにWordが入っていないと、CreateObjectでコケますよね。
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2005-07-06 16:20
引用:
Wordに接続して「テンプレートのWordファイル」に内容を記入するよう操作を行いたい


でしたので、
オープンするワードファイルをサーバーに置いて、これを、
set myRange = objWordDoc.Bookmarks("bookmark1").Range
myRange.text = "<%= サーバー側の変数 %>"

とすると、ワードファイルのブックマークbookmark1にサーバー側で作成した
値が代入されます。

こういうことではないですか。
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-07-06 16:25
ご回答有難うございました。

結局、サーバ側にMicroSoft Officeをインストールする予定はありませんので、
引用:

Wordに接続して「テンプレートのWordファイル」に内容を記入するよう操作を行いたいのですが、方法が良く分かりません。

いずれかの方法、または全く別の不法で、ASPからWordファイルにアクセスし、HPの入力内容を記述するための方法をご存知の方がいらっしゃられましたら、返信のほどよろしくお願いいたします


これは実現不可能と言う事でしょうか?
OLEオートメーションを使用することは出来ませんので、「差し込み印刷」での実現も不可能ということですね。

引用:

ご自身が後段で記述されていますように、
クライアント上でVBScriptが実行されるわけですから、
クライアントにWordが入っていないと、CreateObjectでコケますよね。


今までの話は私にも十分理解出来ましたが、この部分は理解できません。
ASPは、IISサーバ上でVBScriptが実行され、その結果がクライアントに返ってくると認識していました。
ちなみに、クライアントにはWordはインストールされております。

これは、例えば、
ASPでWordファイルを編集するようなHtmlファイルを作成して、それをクライアントにダウンロードする形を取り、クライアント上でダウンロードされたHtmlファイルを実行することで、Wordファイルの編集を実現すると言う方法もある。
という意味なのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)