- PR -

ASP:Excelアプリケーションオブジェクト作成時のエラーについて

1
投稿者投稿内容
midori
会議室デビュー日: 2005/01/28
投稿数: 9
投稿日時: 2005-08-08 15:10
こんにちは。
いつもお世話になっております。

ASPによるExcelのアプリケーションオブジェクト作成時に
エラーが発生してしまいます。

エラー発生箇所:
Set objExcel = CreateObject("Excel.Application")

エラー内容:
800A0046 : “書き込みできません。”

Webサーバ環境:
OS:Windows2000
Excel:2000

IIS設定の「匿名アクセスで使用されるアカウント」に
Admin権限を持っているユーザを指定した場合は、エラーは
発生しませんでした。

以上より、原因としては以下が考えられると思います。

Excelのアプリケーションオブジェクト作成時にどこかに
なんらかのファイルが作成される。
「匿名アクセスで使用されるアカウント」に指定されて
ユーザが、ファイルが作成される場所に対する
書き込み権限を持っていない。

上記の原因であった場合、必要最小限の権限を持つユーザを
設定したいと考えています。
どこに対する書き込み権限を付与すればよいのかご存知の方が
いらっしゃいましたら教えていただけますでしょうか。

宜しくお願い致します。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2005-08-08 16:31
引用:
どこに対する書き込み権限を付与すればよいのかご存知の方が
いらっしゃいましたら教えていただけますでしょうか。



%TEMP% Directory
midori
会議室デビュー日: 2005/01/28
投稿数: 9
投稿日時: 2005-08-08 17:31
ちゃっぴ様、早速のご返信、ありがとうございます。

引用:

%TEMP% Directory



勉強が足りずに申し訳ありません。

上記の設定はどこで確認すればいいのでしょうか?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2005-08-09 00:35
引用:
上記の設定はどこで確認すればいいのでしょうか?



「ファイル名を指定して実行」で「%TEMP%」って打ってみてください。
昔ながらの「環境変数」というやつです。

# Command Prompt とか User Profile に関して少し勉強したほうがいいような・・・
midori
会議室デビュー日: 2005/01/28
投稿数: 9
投稿日時: 2005-08-09 09:29
ちゃっぴ様、ありがとうございます。

引用:

「ファイル名を指定して実行」で「%TEMP%」って打ってみてください。
昔ながらの「環境変数」というやつです。



早速やってみたのですが、該当フォルダをフルコントロールにしても
エラーが出てしまいました。

GetSpecialFolder(2)で取得できるパスについても同様でした。

引用:

# Command Prompt とか User Profile に関して少し勉強したほうがいいような・・・



おっしゃる通りだと思います…
勉強したいと思います。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-08-09 10:35
こんにちは

曖昧な記憶ですが、どこかで「最近使ったファイル」に書き込みに
行こうとしいて、同様のエラーが発生したというものを見た覚え
があります。

外してたらごめんなさい。

[追記]
@ITで読んだものでした。

Excelのショートカットが作成されてしまう


EXCELブックのオープンでショートカットが出来てしまいます


IISのバージョンも違うし、開く処理や保存処理のお話しですので
外してる可能性が高いですね。申し訳ありません。
アカウントを実ユーザにした場合OKなのであれば、その時に作成される
ファイルをフォルダ監視ツールなどで特定する方が問題解決の近道かもしれません。
[/追記]


[ メッセージ編集済み 編集者: でっち6号 編集日時 2005-08-09 14:53 ]
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-08-10 12:57
収束したのかな?

とりあえず後から見る人の為にXP+Office2003の実験結果だけ書いておきます。

コード:
Dim oExcelObject
Set oExcelObject = Server.CreateObject("Excel.Application")
Set oExcelObject = Nothing



※匿名ユーザで実行

・作成されたフォルダ/ファイル(¥を全角にしてます)
C:¥Application Data¥Microsoft¥AddIns
C:¥Application Data¥Microsoft¥Office
C:¥Application Data¥Microsoft¥Office¥Excel10.pip
C:¥My Documents

本来であれば、これらはDocuments and Settingsの各ユーザ別のフォルダ
にできるものでしょう。
Cドライブの直下にできてしまったのは、匿名ユーザで実行したためだと
考えられます。
Officeのオブジェクトを扱う時は、適切なローカルアカウントを与えま
しょうってことかな?
いや、むしろ使うなって方が正しいかな

一応参考になりそうなURLを貼っておきます。
http://support.microsoft.com/default.aspx?scid=kb;ja;257757

環境が違うので、同じ結果となるとは限りませんが、ご参考まで。
midori
会議室デビュー日: 2005/01/28
投稿数: 9
投稿日時: 2005-08-10 15:19
返答が遅れてしまい申し訳ありません。

今回は該当アプリの設定をPowerUserにする
方法で対処することになりました。

でっち6号様、大変参考になる実験結果を
ありがとうございます。

引用:

いや、むしろ使うなって方が正しいかな



ごもっともです
本件を含めて不安要素が盛沢山です…

皆様、ありがとうございました。
1

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