[リストへもどる]
一括表示

投稿時間:2003/01/23(Thu) 09:42
投稿者名:まさと
Eメール:
URL :
タイトル:
続-エクセルデータをMSFlexGrid上に
こんにちは。
@昨日行っていたExcelのファイル名を指示して
Aシート名を読込み
B選択したシートの内容をMSFlexGridに書き込む
処理ですが、
    Dim xlApp As excel.Application
    Dim xlBook As excel.Workbook
    CommonDialog1.Filter = "Excelファイ|*.xls|"
    CommonDialog1.ShowOpen
    intFileName = CommonDialog1.FileName
    Text1.Text = intFileName
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(intFileName)
    
    For i = 1 To xlApp.Worksheets.Count
        Combo1.AddItem xlApp.Worksheets(i).Name
    Next i
    
    DoEvents

    xlBook.Close
    xlApp.Quit
    Set xlApp = Nothing
    Set xlBook = Nothing
を実行した場合、パソコンによってEXCEL.EXEがタスク内で解放されていない現象があります。
解決策等をご存知の方が折られましたら教えていただけないでしょうか?

よろしくお願いします。

投稿時間:2003/01/23(Thu) 10:37
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 続-エクセルデータをMSFlexGrid上に
私が投稿(指摘)した通りにしていないじゃないですか?
こんな事していたらいつまでたっても問題点が解決できませんよ!

以後 私は、回答をひかえさせて頂きます。

投稿時間:2003/01/23(Thu) 10:55
投稿者名:まさと
Eメール:
URL :
タイトル:
Re^2: 続-エクセルデータをMSFlexGrid上に
指摘事項は全てしてみましたが解決できていません。
よって今は元のsourceにしてあります。

昨晩別のパソコンで試してみるとそのパソコンでは問題なくEXCEL.EXEは解放できました。(同じファイルをオープンして)

なぜでしょうか?

投稿時間:2003/01/23(Thu) 11:26
投稿者名:NEU(ノイ)
Eメール:
URL :
タイトル:
Re^3: 続-エクセルデータをMSFlexGrid上に
オブジェクトを解放するときは参照の逆の順序で行います。
今回の場合は
参照 xlApp, xlBook
開放 xlBook, xlApp

前のスレッドで理解されていたと思ったのですが(No.2299)

#この掲示板は一覧の頭の★をクリックすると一括表示ができますよ。

投稿時間:2003/01/23(Thu) 11:55
投稿者名:まさと
Eメール:
URL :
タイトル:
Re^4: 続-エクセルデータをMSFlexGrid上に
すいません。No.2299はどうやら勘違いでした。

ご指摘のところも直しては見たのですが効果はありませんでした。

投稿時間:2003/01/23(Thu) 16:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 続-エクセルデータをMSFlexGrid上に
> ご指摘のところも直しては見たのですが効果はありませんでした。

私が修正した部分はそれなりに問題がある部分です。
1.変数が宣言していない
2.変数名の付け方が間違っている 整数型→文字列
3.キャンセルボタンを押したらエラーが発生しExcelが残る
4.開放の順番が間違っている
等々の効果が今回は無くてもコード上問題が発生する可能性があります。
又、その辺事を理解せず同じ事をしておられると、果たして指摘した通りの事を
本当に確認されているか疑問が残ります。
こう言ったエラーチェックはひとつひとつ考えられる問題点をつぶしていかなければ
堂々めぐりでいつまでたっても解決出来ません。
私が投稿したコードは一応動作確認しております。
同じコードで貴方の場合だけが問題が発生するという事を念頭において下さい。
即ち、環境や、データの違い、貴方が説明していない部分の使用方法等の部分に
問題があるのです。
従って一番最初に書いたように残る原因は最初に投稿されたコードそのものには
問題がありませんと書いたと思うのですが、又今回同じコードを投稿されてますね

全体のコードがどのようになっているか解らないのですが
No.2313 の投稿を本当に試してみましたか? ファイルを新規作成で何も入力しない
ままで保存したファイルを読み込んでみるとか
その時他の操作は及びプログラム等は起動しないで下さいね
Excelを起動して終了するだけのプログラムでも残るならExcelを再インストールして
見た方がいいですよ

又、No.2301 のサンプルも試しましたか?

投稿時間:2003/01/23(Thu) 17:33
投稿者名:まさと
Eメール:
URL :
タイトル:
Re^6: 続-エクセルデータをMSFlexGrid上に
> > ご指摘のところも直しては見たのですが効果はありませんでした。
>
> 私が修正した部分はそれなりに問題がある部分です。
> 1.変数が宣言していない
> 2.変数名の付け方が間違っている 整数型→文字列
> 3.キャンセルボタンを押したらエラーが発生しExcelが残る
> 4.開放の順番が間違っている
> 等々の効果が今回は無くてもコード上問題が発生する可能性があります。
> 又、その辺事を理解せず同じ事をしておられると、果たして指摘した通りの事を
> 本当に確認されているか疑問が残ります。
> こう言ったエラーチェックはひとつひとつ考えられる問題点をつぶしていかなければ
> 堂々めぐりでいつまでたっても解決出来ません。
> 私が投稿したコードは一応動作確認しております。
> 同じコードで貴方の場合だけが問題が発生するという事を念頭において下さい。
> 即ち、環境や、データの違い、貴方が説明していない部分の使用方法等の部分に
> 問題があるのです。
> 従って一番最初に書いたように残る原因は最初に投稿されたコードそのものには
> 問題がありませんと書いたと思うのですが、又今回同じコードを投稿されてますね
>
> 全体のコードがどのようになっているか解らないのですが
> No.2313 の投稿を本当に試してみましたか? ファイルを新規作成で何も入力しない
> ままで保存したファイルを読み込んでみるとか
No.2313は試してみましたがプロセスにEXCEL.EXEが残ったままになりました。

新規作成で何も入力しないままで保存したときは正常にEXCEL.EXEは解放されました。
(シート名を取込むsourceを入れても問題なし)

> その時他の操作は及びプログラム等は起動しないで下さいね
> Excelを起動して終了するだけのプログラムでも残るならExcelを再インストールして
> 見た方がいいですよ
>
> 又、No.2301 のサンプルも試しましたか?
No.2301 のサンプルで教えていただいたサンプルではテキストボックスに入る文字が一部バグってしまいます。
(.が#になります。またシート名の最後に_が付加されてしまいます)


Option Explicit
Dim intFileNo, DatN, i As Integer
Dim intFileName As String
Dim cmd1flag, cmd2flag, cmd3flag, cmd4flag, cmd5flag As Integer
Private Sub Command1_Click()
    CommonDialog1.CancelError = True
    On Error GoTo ErrorHandler
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    
    CommonDialog1.Filter = "Excelファイ(*.xls)|*.xls|"
    CommonDialog1.ShowOpen
    intFileName = CommonDialog1.FileName
    Text1.Text = intFileName
    
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(intFileName)
    
    For i = 1 To xlApp.Worksheets.Count
        Combo1.AddItem xlApp.Worksheets(i).Name
    Next i
    
    DoEvents

    xlBook.Close
    xlApp.Quit
    Set xlBook = Nothing
    Set xlApp = Nothing
    
    cmd1flag = 1
            
ErrorHandler:

End Sub
上記が現状のsourceになります。

現段階でWIN2000 EXCEL2000ではプロセスにEXCEL.EXEが残ってしまいます。
しかしWIN98SE EXCEL2000では残ってないようです。

投稿時間:2003/01/23(Thu) 18:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: 続-エクセルデータを
> > No.2313 の投稿を本当に試してみましたか? ファイルを新規作成で何も入力しない
> > ままで保存したファイルを読み込んでみるとか
> No.2313は試してみましたがプロセスにEXCEL.EXEが残ったままになりました。
>
> 新規作成で何も入力しないままで保存したときは正常にEXCEL.EXEは解放されました。
> (シート名を取込むsourceを入れても問題なし)

それだったら、使ってるファイルに問題があると言う事じゃないのですか?
違うExcelのファイルを読み込んで試して下さい。
コード自体に問題がないと何回もいっているのに同じコードを投稿しても問題は解決しませんよ
問題がない状態から徐々に変更してテストして見ればどこかでおかしくなる場面が解ると思うのですが

プログラムの実行上は問題ないのですが Dim intFileName As String の int は Integer型の
変数を意味するものです。
文字列型の変数名なら str にするのが一般です。
動作上は問題ないのですが、そのコードを他人が見たらどう思うかですね

投稿時間:2003/01/23(Thu) 19:58
投稿者名:まさと
Eメール:
URL :
タイトル:
Re^8: 続-エクセルデータを
花ちゃんさんの通りどうも元のファイルに問題があるようですので今回はExcelデータを作り直します。
現状では元ファイルをコピーして新規に貼り付けしたら正常に動いているのでそのようにしたいと思います。
また別途強制的にプロセスを解放する方法を考えたいと思います。
今回は色々とありがとうございました。

投稿時間:2003/01/23(Thu) 20:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re:エクセルデータを
> 花ちゃんさんの通りどうも元のファイルに問題があるようですので今回はExcelデータを作り直します。
> 現状では元ファイルをコピーして新規に貼り付けしたら正常に動いているのでそのようにしたいと思います。

この事なら No.2315 で回答したはずですが?

>別途強制的にプロセスを解放する方法を考えたいと思います。
そういう処理はやらない方がよろしいかと思います。(今回のような事が独自に解決できない間は)

投稿時間:2003/01/24(Fri) 16:02
投稿者名:まさと
Eメール:
URL :
タイトル:
Re:エクセルデータを
すいませんでした。今回は運用の問題があったのでどうしても元のデータを使いたかったのです。
ですが、どうしようも無いので今回はデータを新しいシートに貼り付けたいと思います。