プロが教えるわが家の防犯対策術!

ADOを使いエクセルファイルを更新モードでオープンしたいのですが、このエクセルファイルにパスワード(例:読み込み用:aaa、書き込み用:bbb)が設定されていたら、どのように記述すれば良いですか。
パスワードが設定されていない場合は、下記の記述でうまくいきます。
ご存知の方がいらっしゃいましたら、よろしくお願い致します。

'ADOオブジェクトを作成
Set objADO = CreateObject("ADODB.Connection")
'更新モードでオープン
objADO.Open "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & SavePath & ";" & "ReadOnly=0"

A 回答 (1件)

> objADO.Open "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & SavePath & ";" & "ReadOnly=0"



上記の接続手法はODBC接続なので、
Excelファイルのパスワードまでをも管理する機能は、ODBC・Excelドライバにはありません。
Windows側でODBC設定でExcelドライバを指定して接続定義する画面を開くと良くわかるかと思いますが、
Excel側で設定しているパスワードも設定し、自動接続するようなことが
できないのがおわかり頂けるかと思います。

理由は、パスワード機能はあくまで「Excel」の機能であり、
「ODBC」の機能ではないので、ODBC接続にExcelパスワードを設定することは不可能ということになります。

とにかく接続!というのも大事ですが、まずは上記の本質をご理解した上で、問題の回避方法を説明します。

ADOでExcelファイルを開いた後、ADO+ ODBC接続でExcelを開くのではなく、「Excel.Application」というオブジェクトを使ってExcelを開くとパスワード入りのExcelファイルを開けるようになります。
こんな感じで・・・(細かい引数などは間違っているかもしれないので、とりあえず感覚だけでもつかんでいただければ)

Set xlsApp = Server.CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Open(strGetFileName, , , ,"読み取り用か書き込み用のパスワード")
.
.
.

ワークブック(Excel)のパスワード自動入力させるやり方は、
http://okwave.jp/qa1693505.html あたりに掲載されています。
また、ASP側でExcelを操作する方法は、
http://okwave.jp/qa457833.html
あたりをご参考にいただければと思います。

それから関係ないんですが、「ReadOnly=0」ではなく、「ReadOnly=False」と書いても動きますので、0, 1でReadOnly属性を設定するのは客観的にわかりずらいので、お勧めできません。
読み取り専用ならその反対で、「ReadOnly=True」になります。

それでは、宜しくお願いします。

参考URL:http://okwave.jp/qa1693505.html

この回答への補足

Excel.Applicationを使ってやってみたのですが、ブラウザが制御不能になってしまい、うまくいきませんでした。引数の記述の仕方を調べたのですが、はっきりしたことがわからず、試行錯誤してみましたが、だめでした。

結局、最終的には、パスワードを設定したエクセルファイルを扱わないで済むよう、仕様を変更したため、この問題については、解決しないままになってしまいました。せっかくご回答をいただいたのに、すみませんでした。

補足日時:2008/11/18 19:26
    • good
    • 0
この回答へのお礼

丁寧なご回答、ありがとうございます。しばらくチェックしていなかったため、今気がつきました。
上記を参考にして、やってみます。その後、またご報告したいと思っています。

お礼日時:2008/08/25 15:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています