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

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

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

Re[7]: Excelのsaveasメソッドでフリーズしてしまいます


(過去ログ 144 を表示中)

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

■84590 / inTopicNo.1)  Excelのsaveasメソッドでフリーズしてしまいます
  
□投稿者/ makoto (16回)-(2017/07/20(Thu) 10:37:32)

分類:[ASP.NET (VB)] 

お世話になります。
Excelファイルにデータを書き込んだ後、saveasメソッドを
使用して保存をしようとしているのですが、saveasメソッド
でフリーズしてしまいます。
似たような事例があったので、色々と試してみたのですが、
どれもうまくいかず手詰まりとなっています。
ファイル名は毎回異なるファイル名にしているので、
競合していることはないと思います。
またsaveasメソッドの前にdoEventを入れてみたのですが、
これもだめでした。



●環境
OS:Windows2012 R2 Standard(64Bit)
Excel:2016 MSO(16.0.7726.1042)32bit
使用ライブラリ:Microsoft Excel 16.0 Object Library


●処理概要

ASPよりパラメータを設定し、Oracleのテーブルからデータを取得し
そのデータを予め作成したテンプレートファイル(xlsx形式)に
セットし、ブラウザからダウンロードする。
(以下はExcelファイル作成の処理の流れです。)

'変数
gvObjExcel As Microsoft.Office.Interop.Excel.Application 'Excelオブジェクト
gvObjBook As Microsoft.Office.Interop.Excel.Workbook 'エクセルワークブックオブジェクト
gvObjSheet As Microsoft.Office.Interop.Excel.Worksheet 'エクセルシートオブジェクト


'▼ExcelファイルOpen処理
gvObjExcel = New Microsoft.Office.Interop.Excel.Application
gvObjBook = gvObjExcel.Workbooks.Open(該当Excelファイル)
gvObjSheet = gvObjBook.Worksheets(該当シート)
gvObjExcel.Visible = False
gvObjExcel.DisplayAlerts = True

'▼Excelファイル書込処理
gvObjSheet.Cells._Default(1, 1).Value = 任意の値





'▼Excelファイル保存処理
.SaveAs(該当Excelファイル)

'▼ExcelファイルClose処理
gvObjExcel.ScreenUpdating = True
gvObjExcel.Quit()
gvObjExcel = Nothing
gvObjBook = Nothing
gvObjSheet = Nothing


引用返信 編集キー/
■84591 / inTopicNo.2)  Re[1]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ shu (1036回)-(2017/07/20(Thu) 10:41:28)
No84590 (makoto さん) に返信

> gvObjExcel.Visible = False
> gvObjExcel.DisplayAlerts = True
確認メッセージが表示される設定なので
Excelでファイル保存をしたときに表示される
メッセージが表示された状態になっています。
Excelを表示状態(gvObjExcel.Visible = True)にするか
DisplayAlerts=Falseにする必要があります。

引用返信 編集キー/
■84592 / inTopicNo.3)  Re[1]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (18回)-(2017/07/20(Thu) 11:07:14)
shu様
回答ありがとうございます。
ご指摘を頂いた部分を修正した所、保存をすることが出来ました。
当初の課題をクリアすることが出来たのですが、
タスクマネージャを見るとExcelのプロセスが残ったままとなってしまいます。
ExcelファイルClose処理はエラーもなく通っているので問題は無いと思われるのですが...







引用返信 編集キー/
■84594 / inTopicNo.4)  Re[2]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ shu (1037回)-(2017/07/20(Thu) 11:18:35)
No84592 (makoto さん) に返信
> shu様
> 回答ありがとうございます。
> ご指摘を頂いた部分を修正した所、保存をすることが出来ました。
> 当初の課題をクリアすることが出来たのですが、
> タスクマネージャを見るとExcelのプロセスが残ったままとなってしまいます。
> ExcelファイルClose処理はエラーもなく通っているので問題は無いと思われるのですが...
>

あと片付けをしっかりとしましょう。
花ちゃんのページが参考になります。
http://hanatyan.sakura.ne.jp/vb2005/vb2013excel01.htm
引用返信 編集キー/
■84596 / inTopicNo.5)  Re[1]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ 魔界の仮面弁士 (1349回)-(2017/07/20(Thu) 11:59:33)
新規投稿時の注意事項に、
 『半角カナは使用しないでください。文字化けの原因になります。』
とのお願いが書かれていたかと思います。次回以降、ご留意ください。


No84590 (makoto さん) に返信
> ASPよりパラメータを設定し、Oracleのテーブルからデータを取得し

この部分について確認させてください。
現在の状況は、下記のどちらに近いでしょうか。


(想像1)
 ASP というのは、ASP.NET の書き間違い。その ASP.NET 上で、
 今回提示のコードが呼ばれており、SaveAs 時に問題が生じている。


(想像2)
 Classic ASP 製の Web アプリでユーザーからの指定を受け取っており、
 この Web アプリが、必要なパラメーターを Oracle に書き込むようになっている。
 そしてそれとは別に、Oracle を監視して、その中のデータを
 Excel に出力させるための VB.NET アプリが稼動していて、今回は
 その VB.NET アプリの側で SaveAs 時に問題が生じている。


> またsaveasメソッドの前にdoEventを入れてみたのですが、
doEvent というのは、
DoEvents メソッドのことですよね。

ということは(2)の方かな? (Windows フォームアプリケーション)


開発言語は、.NET 版の Visual Basic のようですが、Excel 操作時においては、
面倒でも「Option Strict On」付きでコンパイルされることをお奨めします。

暗黙の型変換に頼っていると、COM の参照カウントが不用意に増加してしまい、
オブジェクトを解放しにくくなってしまうケースを幾度か目にしているためです。


また、無人実行を目的とする場合は、Excel をオートメーション操作する代わりに
EPPlus や NPOI などを使うことを検討してみてください。
(非対話デスクトップでの Excel オートメーションはサポートされていません)
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/04/11/office-2/


> gvObjExcel As Microsoft.Office.Interop.Excel.Application 'Excelオブジェクト
Dim や Private といったキーワードが抜けているようですが、わざと抜いているのでしょうか。


> gvObjBook = gvObjExcel.Workbooks.Open(該当Excelファイル)
> gvObjSheet = gvObjBook.Worksheets(該当シート)
ここは、
 gvObjBooks = gvObjExcel.Workbooks
 gvObjBook = gvObjBooks.Open(該当Excelファイル)
 gvObjSheets = gvObjBook.Worksheets
 gvObjSheet = DirectCast(gvObjSheets(該当シート), Microsoft.Office.Interop.Excel.Worksheet)
になるべきかと思います。


> gvObjExcel.Visible = False
> gvObjExcel.DisplayAlerts = True

.Visible = False かつ .DisplayAlerts = True な組み合わせは不自然です。

.Visible = True かつ .DisplayAlerts = True もしくは
.Visible = True かつ .DisplayAlerts = False もしくは
.Visible = False かつ .DisplayAlerts = False を試してみてください。

(動作検証段階では、Visible = True で試してみることをお奨めします)



> '▼Excelファイル書込処理
> gvObjSheet.Cells._Default(1, 1).Value = 任意の値
ここは、
 gvObjRange1 = gvObjSheet.Cells
 gvObjRange2 = DirectCast(gvObjRange1._Default(1, 1), Microsoft.Office.Interop.Excel.Range)
 gvObjRange2.Value = 任意の値
になるべきかと思います。


> .SaveAs(該当Excelファイル)
ピリオドの前が削られていますが、With 句をお使いということでしょうか。
SaveAs メソッドは Workbook にも Worksheet にもありますね。


> gvObjExcel = Nothing
> gvObjBook = Nothing
> gvObjSheet = Nothing
Nothing 代入の前に、Marshal.ReleaseComObject を呼んだ方が良いと思います。
(ReleaseComObject する代わりに、AppDomain ごと Unload する解放手法も無くは無いですが)

また解放する際には、取得した時の逆順(たとえば Range → Sheet → Workbook → Application など)で
処分していった方が良いでしょう。


[Office オートメーションで割り当てたオブジェクトを解放する - Part1]
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/09/office-5/

[Office オートメーションで割り当てたオブジェクトを解放する &#8211; Part2]
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/28/office-3/

引用返信 編集キー/
■84598 / inTopicNo.6)  Re[1]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ WebSurfer (1268回)-(2017/07/20(Thu) 12:44:20)
No84590 (makoto さん) に返信

魔界の仮面弁士さんも書かれていますが "マイクロソフトは、Office のサーバーサイド オートメーション
を推奨またはサポートしていません" というこだそうです。

Office のサーバーサイド オートメーションについて
https://support.microsoft.com/ja-jp/help/257757/considerations-for-server-side-automation-of-office

で、以下の要件に対する代案ですが、

> ASPよりパラメータを設定し、Oracleのテーブルからデータを取得し
> そのデータを予め作成したテンプレートファイル(xlsx形式)に
> セットし、ブラウザからダウンロードする。

書式設定等を行う必要がなく、単にデータを Excel のブックに INSERT 処置するだけなら ADO.NET と ACE
OleDb プロバイダを利用して可能だと思います。具体例は以下の記事を見てください。

ACE OleDb で Excel のブック作成
http://surferonwww.info/BlogEngine/post/2012/01/26/Creating-Excel-workbook-by-using-ACE-OleDb-provider.aspx

上に紹介した記事で "Microsoft 2007 Office System Driver と 2010 Access Database Engine を Microsoft
Office コンポーネントとして扱います" と言っている点がちょっと気になりますが、以下の記事ではサーバー
サイドで ACE を使うことを推奨しています。

Microsoft Access 2010 を使用したデータ プログラミング
https://msdn.microsoft.com/ja-jp/library/ff965871(v=office.14).aspx

ライセンス的には分かりませんが、技術的には問題なさそうです(もちろんきちんと検証すればですが)。
引用返信 編集キー/
■84600 / inTopicNo.7)  Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (19回)-(2017/07/20(Thu) 13:27:49)
2017/07/20(Thu) 13:29:17 編集(投稿者)

shu様、魔界の仮面弁士様、WebSurfer様
回答ありがとうございます。

●shu様
>あと片付けをしっかりとしましょう。花ちゃんのページが参考になります。
上記ページを参考にCOMオブジェクトの参照カウントのデクリメント処理を追加しました。

●WebSurfer様
回答ありがとうございます。
>"マイクロソフトは、Office のサーバーサイド オートメーションを推奨またはサポートしていません" というこだそうです。
細かくは業務に関することなので、書けないですがこのEXCEL出力は
既存システムの帳票出力機能の一部です。(pdf,JPG出力もあります。)
既存の帳票出力の仕組みがあるためあまり大幅に変えたくない所が本音です。
ですが、参考にはさせていただきます。

●魔界の仮面弁士様
> 『半角カナは使用しないでください。文字化けの原因になります。』
申し訳ございません。今後、注意します。

>この部分について確認させてください。現在の状況は、下記のどちらに近いでしょうか。
(想像2)の方になります。oracle側に書き込み(Insert,Uptedate)は行わずに
selectでデータを抽出し、その結果をExcelに書き込みを行っています。

>doEvent というのは、
>DoEvents メソッドのことですよね。ということは(2)の方かな? (Windows フォームアプリケーション)
クラスライブラリ形式(DLL)です。doEventに関しては今は削除しています。
(調べ尽くして藁にもすがる思いで試しに入れてみただけです。)

>開発言語は、.NET 版の Visual Basic のようですが、Excel 操作時においては、
>面倒でも「Option Strict On」付きでコンパイルされることをお奨めします。
ご指摘ありがとうございます。Option Strict On」は宣言はしています。

>Dim や Private といったキーワードが抜けているようですが、わざと抜いているのでしょうか。
不要と思い削除しました。(実際はpublicです。)

>ここは、
> gvObjBooks = gvObjExcel.Workbooks
> gvObjBook = gvObjBooks.Open(該当Excelファイル)
> gvObjSheets = gvObjBook.Worksheets
> gvObjSheet = DirectCast(gvObjSheets(該当シート), Microsoft.Office.Interop.Excel.Worksheet)
>になるべきかと思います。
>.Visible = False かつ .DisplayAlerts = True な組み合わせは不自然です。
>.Visible = True かつ .DisplayAlerts = True もしくは
>.Visible = True かつ .DisplayAlerts = False もしくは
>.Visible = False かつ .DisplayAlerts = False を試してみてください。
>(動作検証段階では、Visible = True で試してみることをお奨めします)

> '▼Excelファイル書込処理
> gvObjSheet.Cells._Default(1, 1).Value = 任意の値
>ここは、
> gvObjRange1 = gvObjSheet.Cells
> gvObjRange2 = DirectCast(gvObjRange1._Default(1, 1), >Microsoft.Office.Interop.Excel.Range)
> gvObjRange2.Value = 任意の値
>になるべきかと思います。
ご指摘ありがとうございます。上記に関しては組み合わせを検証します。



>ピリオドの前が削られていますが、With 句をお使いということでしょうか。
>SaveAs メソッドは Workbook にも Worksheet にもありますね。
ここも不要と思い削除しました。(BOOKのsaveasメソッドです。)

>Nothing 代入の前に、Marshal.ReleaseComObject を呼んだ方が良いと思います。
>(ReleaseComObject する代わりに、AppDomain ごと Unload する解放手法も無くは無いですが)
shu様に教えていただいたページを参考にCOMオブジェクトの参照カウントのデクリメント処理
を追加して▼ExcelファイルClose処理のnothingの前にCOMオブジェクトの参照カウントのデクリメント
を行ってみたのですが、Excelが終了しませんでした。
これに関してはどこのタイミングで開放を行うべきか現在、考え中です。



引用返信 編集キー/
■84601 / inTopicNo.8)  Re[3]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ shu (1038回)-(2017/07/20(Thu) 14:17:03)
No84600 (makoto さん) に返信

> >ここは、
> > gvObjBooks = gvObjExcel.Workbooks
> > gvObjBook = gvObjBooks.Open(該当Excelファイル)
> > gvObjSheets = gvObjBook.Worksheets
> > gvObjSheet = DirectCast(gvObjSheets(該当シート), Microsoft.Office.Interop.Excel.Worksheet)
> >になるべきかと思います。
魔界の仮面弁士さんのこの指摘は
gvObjSheets = gvObjBook.Worksheets
の部分が重要なので見落とさないよう気を付けてください。
これを忘れると参照の解放が1個出来ない状態となってしまいます。

Excel内のオブジェクトについて
Obj1のメソッドやプロパティでObj2型のものを返すものを
Obj1.Obj2
としたとき
Obj1.Obj2.Obj3
という書き方をするとObj2についての参照を保持することが出来なくなる為解放が出来なくなります。
それを回避するために
Dim Obj2 = Obj1.Obj2
Dim Obj3 = Obj2.Obj3
のように1つ1つ分けて書く必要があります。




引用返信 編集キー/
■84602 / inTopicNo.9)  Re[3]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ 大谷刑部 (31回)-(2017/07/20(Thu) 14:27:46)
No84600 (makoto さん) に返信
> 2017/07/20(Thu) 13:29:17 編集(投稿者)
> >Nothing 代入の前に、Marshal.ReleaseComObject を呼んだ方が良いと思います。
> >(ReleaseComObject する代わりに、AppDomain ごと Unload する解放手法も無くは無いですが)
> shu様に教えていただいたページを参考にCOMオブジェクトの参照カウントのデクリメント処理
> を追加して▼ExcelファイルClose処理のnothingの前にCOMオブジェクトの参照カウントのデクリメント
> を行ってみたのですが、Excelが終了しませんでした。

↓以下を参照したほうがいいですよ。
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx


引用返信 編集キー/
■84603 / inTopicNo.10)  Re[4]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ 魔界の仮面弁士 (1351回)-(2017/07/20(Thu) 14:40:34)
No84600 (makoto さん) に返信
>> 開発言語は、.NET 版の Visual Basic のようですが、Excel 操作時においては、
>> 面倒でも「Option Strict On」付きでコンパイルされることをお奨めします。
> ご指摘ありがとうございます。Option Strict On」は宣言はしています。

Option Explicit On と混同していた…という可能性は無いでしょうか?

手元に同一環境が無いので未確認ですが、実際に Option Strict On が指定されているならば、
>> gvObjSheet = gvObjBook.Worksheets(該当シート)
のコードで、コンパイルエラー BC30512 あたりが報告されていそうな気がするのですが。

例:『Option Strict On で 'Object' から 'Microsoft.Office.Interop.Excel.Worksheet' への暗黙的な変換はできません。』


それと、今回はテンプレートによる別名保存が主目的なので、Workbooks に対しては
Open メソッドではなく、Add メソッドを用いた方が、コードの意図を示せると思います。
(テンプレートとなる元ファイルも、*.xlsx/*.xls ではなく *.xltx/*.xlt で)


> を追加して▼ExcelファイルClose処理のnothingの前にCOMオブジェクトの参照カウントのデクリメント
> を行ってみたのですが、Excelが終了しませんでした。

コードの一部をコメントアウトしてみて、どの箇所を通過したときに
終了しなくなるのかを探っていってみてください。


(1) New しただけで、Open(Add) せずにそのまま Quit した場合は、正常に閉じられるのか?

(2) Open(Add) した後、gvObjSheet に該当シートを取得することなく、
 gvObjBook.Close(False) と gvObjExcel.Quit() を呼び出した場合は?

(3) 該当シート にアクセスしただけで、セルにはアクセスしなかった場合は?


それと、Excel のオブジェクトに対して
For Each を呼び出していないかも確認しておきましょう。
http://bbs.wankuma.com/index.cgi?mode=red&namber=54149&KLOG=91
引用返信 編集キー/
■84604 / inTopicNo.11)  Re[4]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (20回)-(2017/07/20(Thu) 15:02:15)
No84601 (shu さん) に返信
shu様
回答ありがとうございます。

ご指摘の通りかなり重要な部分が抜けていました。
現在、指摘のとおりに修正を行って検証を行っています。

引用返信 編集キー/
■84605 / inTopicNo.12)  Re[4]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (21回)-(2017/07/20(Thu) 15:04:34)
No84602 (大谷刑部 さん) に返信
大谷刑部様
回答ありがとうございます。
ページに記載されていたやり方で検証を行っています。
(うまくいかないのでデバッグで1つずつ見ています。)

引用返信 編集キー/
■84606 / inTopicNo.13)  Re[5]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (22回)-(2017/07/20(Thu) 15:15:57)
No84603 (魔界の仮面弁士 さん) に返信
魔界の仮面弁士様
回答ありがとうございます。

>Option Explicit On と混同していた…という可能性は無いでしょうか?
申し訳ございません。「Option Explicit off」になっていました。

>コードの一部をコメントアウトしてみて、どの箇所を通過したときに
>終了しなくなるのかを探っていってみてください。
1つずつ見ていって検証を行おうと思います。

ちなみに今のプログラムの構造は以下のようになっています。

●Excel操作共通クラス
▼主要メンバ
Excelオブジェクト(Public)
ExcelBooks(Public)
ExcelBook(Public)
ExcelSheets(Public)
ExcelSheet(Public)

▼主要メソッド
・Excelオブジェクト生成
・ファイル保存
・ファイルクローズ


●帳票作成クラス
▼主要メソッド
・Oracleよりデータ取得
・Excel帳票作成処理(Excel操作共通クラス.ExcelSheet(Public)を参照して値をセット)
引用返信 編集キー/
■84607 / inTopicNo.14)  Re[6]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (23回)-(2017/07/20(Thu) 15:45:29)
追記です。

オブジェクトが開放されないタイミングは「●帳票作成クラス.Excel帳票作成処理」でした。
Excel帳票作成処理は以下のような処理をしています。
今回このメソッドのfinally句にオブジェクトの開放(sheet)を入れてみたのですが、
だめでした。

try

ExcelSheet.Cells._Default(5, 97) = データベースから取得した値
以下同じような処理が数十行

finally
シートの開放
end try

引用返信 編集キー/
■84608 / inTopicNo.15)  Re[6]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ 魔界の仮面弁士 (1352回)-(2017/07/20(Thu) 16:16:05)
No84606 (makoto さん) に返信
>>>> 面倒でも「Option Strict On」付きでコンパイルされることをお奨めします。
>>> ご指摘ありがとうございます。Option Strict On」は宣言はしています。
>> Option Explicit On と混同していた…という可能性は無いでしょうか?
> 申し訳ございません。「Option Explicit off」になっていました。

いや Explicit も On にするべきですが(既定値は On)
私が指摘しているのは Strict の方です(既定値は Off)。


> ●Excel操作共通クラス
> ▼主要メンバ
クラスにカプセル化するなら、Excel 関連のオブジェクトは
Private にしておいた方が安全です。

Public で直接公開すると、クラス外部から差し替えられたり、
参照カウントを増加させられてしまうといった弊害が生じかねません。

(とはいえ、現在の設計を大きく変えるのは難しいかもしれませんが)



No84607 (makoto さん) に返信
> ExcelSheet.Cells._Default(5, 97) = データベースから取得した値

No84596 での修正案をもう一度読み返してみてください。
ExcelSheet.Cells._Default(5, 97) はアウトです。

Excel.Range オブジェクトを引数に受け取り、それを解放する必要があります。
たとえばこんな感じです。


===== 修正案1 =====
' Range プロパティで、1 セルだけを示す Range オブジェクトを取得
Dim r As Excel.Range = ExcelSheet.Range("CS5")
' Value プロパティ等で値を設定
r.Value = データベースから取得した値
' Range オブジェクトを解放
Marshal.ReleaseComObject(r)
r = Nothing


===== 修正案2 =====
'Cells プロパティから、シート上の全セルを示す Range オブジェクトを取得
Dim r1 As Excel.Range = ExcelSheet.Cells
'そこから 5行97列目だけを示す Range オブジェクトを取得
Dim r2 As Excel.Range = DirectCast(r1(5, 97), Excel.Range)
' Value プロパティ等で値を設定
r2.Value = データベースから取得した値
' 2 つの Range オブジェクトを解放
Marshal.ReleaseComObject(r2)
Marshal.ReleaseComObject(r1)
r2 = Nothing
r1 = Nothing


===== 修正案3 =====
'Cells プロパティから、シート上の全セルを示す Range オブジェクトを取得
Dim r0 As Excel.Range = ExcelSheet.Cells
' 既定のプロパティへの代入で値を設定
' ただし VB.NET からだと、Property Let と Property Set を直接区別できないので
' CallByName (もしくはリフレクション)を経由して渡すようにする
CallByName(r0, "[DispId=0]", CallType.Let, 5, 97, データベースから取得した値 )
' Range オブジェクトを解放
Marshal.ReleaseComObject(r0)
r0 = Nothing
引用返信 編集キー/
■84609 / inTopicNo.16)  Re[5]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ 大谷刑部 (32回)-(2017/07/20(Thu) 16:25:48)
No84605 (makoto さん) に返信
> ■No84602 (大谷刑部 さん) に返信
> 大谷刑部様
> 回答ありがとうございます。
> ページに記載されていたやり方で検証を行っています。
> (うまくいかないのでデバッグで1つずつ見ています。)

shuさんのいっていることと

http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx

の記載内容は、ほぼ同じことを言っています。
それを理解してますか?

ほかの人とのやり取りでも、
ちゃんと指摘したことを理解して自分のコードを修正しているか正直疑問なんですが。
若干応答がかみ合ってません。


引用返信 編集キー/
■84610 / inTopicNo.17)  Re[6]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (25回)-(2017/07/20(Thu) 17:16:31)
大谷刑部様

皆様の指摘を頂いて、根本的に間違えている部分が
あるので、現在コードに反映しています。
その上で検証を行おうと思います。

> shuさんのいっていることと
> http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/1149.aspx
> の記載内容は、ほぼ同じことを言っています。
> それを理解してますか?
> ほかの人とのやり取りでも、
> ちゃんと指摘したことを理解して自分のコードを修正しているか正直疑問なんですが。
> 若干応答がかみ合ってません。


引用返信 編集キー/
■84611 / inTopicNo.18)  Re[7]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (26回)-(2017/07/20(Thu) 17:23:06)
魔界の仮面弁士様

回答ありがとうございます。
修正案2でコードの修正を一部行って(既存のものは一旦コメント)
確認した所、Excelのプロセスが残らないことを確認できました。

一旦コメントにしたものに同様の修正を行って行きたいと思います。

引用返信 編集キー/
■84612 / inTopicNo.19)  Re[7]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ makoto (28回)-(2017/07/20(Thu) 17:53:44)
皆様のご指摘をいただき当初の問題とExcel開放の問題を解決することが出来ました。
この度は誠にありがとうございました。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -