C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#でExcelのWorkBookオブジェクトを保存時にエラー


(過去ログ 3 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3077 / inTopicNo.1)  C#でExcelのWorkBookオブジェクトを保存時にエラー
  
□投稿者/ Soony 二等兵(8回)-(2006/04/11(Tue) 15:19:36)

分類:[C#] 


分類:[C#] 

2006/04/11(Tue) 18:44:59 編集(投稿者)
2006/04/11(Tue) 15:22:51 編集(投稿者)

こんにちは。Soony と申します。
いつも参考にさせていただいて、日々救われております。

Win XP Pro SP2 (開発、実行)
Office 2003 Pro(開発、実行)
VS2003 C#

C#でVisual Studio Tools for Officeを使用しているのですが、
SaveメソッドやSaveAsメソッド、Closeメソッドなどを使用して、
作成したExcelファイルを保存しようとすると、
「ファイルが保存できませんでした」というエラーが表示され、
怒られてしまうパソコンがあります。

 Excel.Application objApp = new Excel.Application();
 try {
  Excel.Workbooks objBooks = objApp.Workbooks;
  try {
   Excel._Workbook objBook = objBooks.Open(filename, 0, false, Missing.Value, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
   try {
    Excel.Sheets objSheets = objBook.Worksheets;
    try {
     Excel._Worksheet objSheet = (Excel.Worksheet)objSheets.get_Item(1);
     try {
      //
     } finally {
      if (objSheet != null) {
       System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
      }
     }
    } finally {
     if (objSheets != null) {
      System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheets);
     }
    }
   } finally {
    if (objBook != null) {
     try {
      objBook.Close(true, filename, true);
//     ↑ ここでエラーになる ↑
     } finally {
      System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook);
     }
    }
   }

この現象は、必ずというわけではなく、特定のパソコンで発生します。

実行している各パソコンは、Active Directory環境下に30台ほどあり、
動作を確認すると、4割程度のパソコンで上記のエラーが発生し、
残りのパソコンでは、期待通りに正常にファイルが保存されます。

また、エラーが発生しているパソコンでログイン先を自PCにする
(ドメインへのログインからはずれる)と、正常に保存がなされるので、
Excelファイルを保存するときに、何かしらのセキュリティが
かかってしまっているのかなと考えているのですが・・・。

また、正常に保存ができたExcelファイルを、エラーが発生するパソコン上で
OfficeのExcelで開き、上書き保存をしようとすると、
「ファイルが保存できません」と怒られます。
(ファイル名を指定して保存をしても、同様に怒られる現象もありました)


一応、ドメイン環境に参加した状態で、以下の権限設定をしています。
・ドメイン上で、Domain Users権限
・ドメインにログインしているユーザーに、ローカルPCに対して、Administrators権限
(できれば、Power User権限としておきたいが、テスト用に一部のPCでフルに与えてみている)

この不具合を回避するために、どのような設定が必要なのか掴めずにいます。
お知恵の拝借をさせていただきたく、お願いいたします。



p.s.
・・・もしかすると、質問の趣旨が、この掲示板の趣旨から
外れてしまっているかもしれませんね・・・(大汗)。

どちらかというと、言語の問題よりも、ネットワーク環境の問題に
終始しそうな気がします。

でも、VSOTを使用する上においてという意味では、こちらで質問した方が
的確な解決方法が得られそうではありますね。

ということで、場違いの可能性は否定できませんが・・・
ご教授いただけることを期待して・・・
ぜひよろしくお願いいたします。



0
引用返信 編集キー/
■3103 / inTopicNo.2)  Re[1]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ 特攻隊長まるるう 二等兵(6回)-(2006/04/13(Thu) 21:21:37)

分類:[C#] 

とりあえず…管理ツールのイベントビューアでなんかエラーメッセージ出ていますか?

0
引用返信 編集キー/
■3104 / inTopicNo.3)  Re[2]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ 中博俊 神(365回)-(2006/04/13(Thu) 21:37:10)
中博俊 さんの Web サイト

分類:[C#] 

この掲示板の趣旨なんてたいそうなものは無いので大丈夫(^^
全範囲を扱いますよ(^^

さて、エラーメッセージがもう少し細かくわかれば。たとえば例外の種類や、メッセージ以外の情報。
Closeしようとしているファイル名と、フォルダの権限など。既存のファイルの有無など。

あとはファイルに監査を仕掛けるとか、filemonで追跡する。

ここまでやればほとんど原因がわかると思います。

0
引用返信 編集キー/
■3130 / inTopicNo.4)  Re[3]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony 二等兵(9回)-(2006/04/18(Tue) 06:01:31)

分類:[C#] 

こんにちは。Soonyです。

レス、遅くなって申し訳ありません。
特攻隊長まるるうさん、中博俊さん、ご回答ありがとうございます。

> とりあえず…管理ツールのイベントビューアでなんかエラーメッセージ出ていますか?


> この掲示板の趣旨なんてたいそうなものは無いので大丈夫(^^
> 全範囲を扱いますよ(^^
>
> さて、エラーメッセージがもう少し細かくわかれば。たとえば例外の種類や、メッセージ以外の情報。
> Closeしようとしているファイル名と、フォルダの権限など。既存のファイルの有無など。
>
> あとはファイルに監査を仕掛けるとか、filemonで追跡する。
>
> ここまでやればほとんど原因がわかると思います。


今度の水曜日に、現地での検証作業ができます。
ですので、そのときに上記アドバイスいただいた方法で検証を行ってこようと思います。
(現場が遠くて、なかなか検証作業にいけないので困ります・・・)

またその後に、結果報告にここに訪れたいと思いますので、
それによって何かまたアドバイスがいただけるととても助かります。

ちなみに、質問提起の本文内容以外で、現時点で分かっている条件としては、

1.Excelファイルの生成には、テンプレートとして、たとえば hoge.xls という
  Excelファイルをファイルサーバー上に先に生成しておき、それを、ローカルpcに
  hoge_copy.xls としてコピーし、それを Open している。

2.ファイルサーバー上のhoge.xlsファイルの権限は、
   Administrators(server\Administrators)
   Everyone (あとから手動で追加分)
   SYSTEM
   Users(server\Users)
  ファイルサーバー上の hoge.xls があるフォルダ(共有フォルダ)は、
  ネットワーク上からみて、
   Administrators(server\Administrators)
   Creator Owner
   SYSTEM
   Users(server\Users)
  が与えられており、コピー後のhoge_copy.xlsファイルは、単にC#上で File.Copy メソッド
  によってローカルPCにコピーしているもの。よって、ローカルPC上では、おそらく
   Administrators(local\Administrators)
   SYSTEM
   Users(local\Users)
  となっている、、、のかな?(現地で確認してみないとちょっと正確には不明)
  (XP Proで、ファイルの権限表示ってどうやるんだったかな・・・汗)
  
  こんな感じだと思います。
  

3.不可思議な症状として、結果的に生成に成功した hoge_edited.xls ファイルを
  別のPCにコピーしてExcelで開き、hoge_edited.xlsを上書き保存すると、
  「ファイルが保存できませんでした。」というエラーになってしまう状況において、
  最初のhoge.xls時にあらかじめ組み込んでおいたVBAマクロの標準モジュールを、
  hoge_edited.xlsから削除すると、上書き保存が可能になるという現象があった。

現在分かっている情報は、このくらいです。
いずれにしても、水曜日に現地検証して、またご報告させていただきます。



0
引用返信 編集キー/
■3170 / inTopicNo.5)  Re[4]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony 二等兵(11回)-(2006/04/19(Wed) 17:17:42)

分類:[C#] 

2006/04/19(Wed) 17:47:20 編集(投稿者)

こんにちは。Soony@検証作業真っ最中 です。

先日アドバイスいただいたものを、片っ端から行ってみました。


まず、イベントビューアには、アプリケーション、システム、イベントともに、
なにも出力されていませんでした。


FileMonも使ってみました。
ログにSuccessedも含めると、えらい量になるので、チェックをはずしていますが、
情報としては足らないのでしょうか?
Log errorsだけにしてしまうと、上書き保存時に何も出力されないので、
Opens, Reads, Writes にもチェックを入れています

それで、まず、、、ログの見方がよくわからずで、
Attribute Errorなどが出ているので、何かしらのファイルアクセスエラーになっているのは
わかったのですが、これが権限などに影響しているのかどうか・・・判別ができずにいます。


かなり長くごちゃごちゃと書きなぐってしまいましたが、
以下、検証結果になります。

もし、なにかおかしな部分がありましたら、ご教授願えないでしょうか。


■ファイルのセキュリティ権限
  コピー元(hoge.xls、\\ネットワーク上のファイルサーバ\共有フォルダ)
    Administrator (SERVER\Administrator)
    Everyone
    SYSTEM
    Users (SERVER\Users)
    ※すべてフルコントロール
  \\ネットワーク上のファイルサーバー\共有フォルダ\
  のフォルダの権限も同様に、
    Administrator (SERVER\Administrator)
    Everyone
    SYSTEM
    Users (SERVER\Users)
    ※すべてフルコントロール

  File.Copy("hoge.xls", "hoge_copy.xls", true)でコピー直後の、
  ローカルPC\hoge_copy.xlsの権限
    Everyone (フルコントロールになっているが、グレー表示)
  また、このファイルを開くことはできるが、上書き保存はできない。
  また、このhoge_copy.xlsファイルを別フォルダにコピーしても
  やはり上書き保存はできない。

  生成ファイル(hoge_make.xls、ローカルPC、アプリケーションによって作成)


■エラー時のエラーの種類
  System.Runtime.InteropServices.COMException
  COMException.Message = "ファイルを保存できませんでした。"
  #エラーオブジェクトのクイックウォッチも添付しておきます。


■ファイルアクセスモニタリング(FileMon)ログ
  File.Copy("hoge.xls", "hoge_copy.xls", true)
  でコピー直後のログは、

17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft  Change Notify 


  objBook.Close(true, "hoge_make.xls", true);
  を実行した結果、以下のようなログは、

0.00002542 EXCEL.EXE:3832 DIRECTORY D:\Hoge_soft\bin\Debug\Temp\ NO SUCH FILE FileBothDirectoryInformation: hoge_make.xls 
0.00002486 EXCEL.EXE:3832 DIRECTORY D:\Hoge_soft\bin\Debug\Temp\ NO SUCH FILE FileBothDirectoryInformation: hoge_make.xls 
0.00002877 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\hoge_make.xls NOT FOUND Attributes: Error 
0.00003380 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\hoge_make.xls NOT FOUND Attributes: Error 
0.00003967 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\95477000 NOT FOUND Attributes: Error 
0.00003101 EXCEL.EXE:3832 OPEN D:\Hoge_soft\bin\Debug\Temp\95477000 NOT FOUND Options: Open Access: All 
0.00000726 EXCEL.EXE:3832 READ C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\3FDE6FFB.emf END OF FILE Offset: 2696 Length: 8192 
0.00001453 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.08655653 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.06760077 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.00003967 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\CRTDLL.dll NOT FOUND Attributes: Error 
0.04650731 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.00004470 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
0.00003799 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
0.00001928 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system\vba232me.dll NOT FOUND Attributes: Error 
0.00002738 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
0.00002486 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\vba232me.dll NOT FOUND Attributes: Error 
0.00002291 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
0.00002011 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
0.00002542 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\System32\Wbem\vba232me.dll NOT FOUND Attributes: Error 
0.00004163 EXCEL.EXE:3832 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002542 EXCEL.EXE:3832 OPEN C:\VBABG32.OLB NOT FOUND Options: Open Access: All 
0.00002375 EXCEL.EXE:3832 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002794 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
0.00003017 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002011 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002319 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002179 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
0.00001844 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\System32\Wbem\VBABG32.OLB NOT FOUND Attributes: Error 
0.00002822 EXCEL.EXE:3832 OPEN C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Options: Open Access: All 
0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
0.00001509 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.08477446 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000503 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000447 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000503 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000447 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
0.00003073 EXCEL.EXE:3832 DIRECTORY C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\ NO SUCH FILE FileBothDirectoryInformation: Temp 
0.00003324 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
0.00000698 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp BUFFER OVERFLOW FileAllInformation 
0.00001453 EXCEL.EXE:3832 OPEN D:\Hoge_soft\bin\Debug IS DIRECTORY Options: Open Access: All 
0.00003743 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
0.00002598 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
0.00000670 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\index.dat RANGE NOT LOCKED Offset: 0 Length: -1 
0.00000615 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\index.dat RANGE NOT LOCKED Offset: 0 Length: -1 
 devenv.exe:3496 DIRECTORY D:\Hoge_soft  Change Notify 


ただ、、、いまさら気がついたのですが、
単にファイルサーバーからhoge.xlsをエクスプローラでローカルPCにコピーしてExcelで開き、
上書き保存してみたところ、同様に「ファイルを保存できませんでした。」というエラーになりました。

この上書き保存時に出力されたログが、これです。
(・・・errorタイプのログに、hoge.xlsが見つからないんですが・・・)

17:04:03 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\13CDCF89.emf BUFFER OVERFLOW FileAllInformation 
17:04:08 EXCEL.EXE:1540 QUERY INFORMATION D:\Test\D31F7000 NOT FOUND Attributes: Error 
17:04:08 EXCEL.EXE:1540 OPEN D:\fm2005\D31F7000 NOT FOUND Options: Open Access: All 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\System32\Wbem\vba232me.dll NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 OPEN C:\VBABG32.OLB NOT FOUND Options: Open Access: All 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\System32\Wbem\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 OPEN C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Options: Open Access: All 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\13CDCF89.emf BUFFER OVERFLOW FileAllInformation 


0
引用返信 編集キー/
■3172 / inTopicNo.6)  Re[5]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony 二等兵(13回)-(2006/04/19(Wed) 17:43:05)

分類:[C#] 

2006/04/19(Wed) 17:45:03 編集(投稿者)

こんにちは。Soonyです。

追記です。
前々回のレスにも書きましたが、ファイルサーバー上のコピー元 hoge.xls には、
VBAマクロとして、標準モジュールが書かれています。

このファイルをローカルPCにコピーしてから、標準モジュール内のプロシージャを、
Sheet直下のコード領域に直接書き込みなおして、標準モジュールを削除したところ、
上書き保存がうまくできてしまいました。

参考になるかわかりませんが、以下、上書き保存成功時におけるFileMonログです。
(Successesは外しています)

17:31:13 EXCEL.EXE:2588 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\79C4810A.emf BUFFER OVERFLOW FileAllInformation
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION D:\Test\C8D79000 NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 OPEN D:\Test\C8D79000 NOT FOUND Options: Open Access: All
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\system\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\WINDOWS\System32\Wbem\vba232me.dll NOT FOUND Attributes: Error
17:31:19 EXCEL.EXE:2588 OPEN D:\Test\hoge.xls.xls * 0xC0000061 Options: Open Access: All
17:31:19 EXCEL.EXE:2588 QUERY SECURITY D:\Test\hoge.xls.xls BUFFER OVERFLOW
17:31:19 EXCEL.EXE:2588 QUERY SECURITY D:\Test\ BUFFER OVERFLOW
17:31:19 EXCEL.EXE:2588 QUERY SECURITY D:\Test\C8D79000 BUFFER OVERFLOW
17:31:19 svchost.exe:1084 OPEN D:[Object ID] NOT FOUND Options: Open ByID Access: All
17:31:19 svchost.exe:1084 DIRECTORY D:\$Extend\$ObjId Change Notify
17:31:19 EXCEL.EXE:2588 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\79C4810A.emf BUFFER OVERFLOW FileAllInformation

よろしくお願いいたします。


0
引用返信 編集キー/
■3173 / inTopicNo.7)  Re[6]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony 二等兵(14回)-(2006/04/19(Wed) 18:14:10)

分類:[C#] 

こんにちは。Soonyです。
あわただしい投稿で申し訳ありません。

もしかすると解決できました。

サーバー上の元ファイル hoge.xls の保存形式を、
「Microsoft Office Excel ブック」形式で保存することでこのエラーは起こらなくなりました。

それまでは、ブックの保存形式が、
「Microsoft Excel 97-Excel 2003 および 5.0/95 ブック」形式で保存されていました。
おそらく、クライアントから預かった資料のブックのバージョンが古かったために、
Excel 2003 で上書き保存した際に、この形式が自動的に選択されてしまったものと思われます。

この解決に至ったのは、以下の資料を発見できたためです。
http://support.microsoft.com/default.aspx?scid=kb;ja;834863
※MSのコメントでは、「この動作は仕様です。 」となってます・・・う〜ん。


ただ、この文献を見る限りでは、ちょっとまだ完全に解決とはいかないところもあります。
MSの文献をそのまま載せると、

「Microsoft Excel 5.0/95 ブック形式としてブックを保存する処理において、含まれているモジュール名が重複していないかを確認します。この確認処理は Win32 API と Office アプリケーションによって組み込まれるモジュールとで実現していますが、異なる文字が誤って同一文字と判断される場合があります。その結果、実際にはそれぞれ異なる名前のモジュールが、同一の名前を持つと判断し、保存処理を中断してエラー メッセージを表示します。」

とありますが、使用している標準モジュールはひとつですし、Module1という名前から
変更もしていません。ですので、またこの問題とは別のものなのかもしれません。


ということで、いろいろとアドバイスを下さった、特攻隊長まるるうさん、中博俊さん、
ありがとうございました。


一応、このレスをもって解決とさせていただきます。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -