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

投稿時間:2003/08/21(Thu) 13:38
投稿者名:shin1
URL :
タイトル:
VBでエクセル実行後
はじめまして。早速ですが、質問です。
VB(Ver6 SP3)でエクセルの処理を行った後で、エクセルを開くと
(エクスプローラからファイル名をダブルクリック)セル部分が表示されません。
2回目以降は正常に表示します。1回目から正常に表示する方法は無いのでしょうか?
(エクセルを起動し、ファイルを開くでの場合は表示されます。)
宜しくお願い致します。
エクセルの処理部分は、下記のようになっています。
'
  Set xlBook = GetObject(k_name)
  On Error GoTo exlerr
'Excelを表示
'''  xlBook.Application.Visible = True
'Bookを非表示
  num = xlBook.Application.Workbooks.Count
  xlBook.Parent.Windows(num).Visible = False
'メッセージや警告メッセージを表示させない
  xlBook.Application.DisplayAlerts = False
'
  fsu = 0
  fsu = xlBook.Worksheets.Count
  ReDim Preserve f_nam(1 To fsu)
  For i1 = 1 To xlBook.Worksheets.Count
    f_nam(i1) = fld_name & sys_name & xlBook.Worksheets.Item(i1).Name & ".csv"
    xlBook.Sheets(xlBook.Worksheets.Item(i1).Name).SaveAs FileName:=f_nam(i1), FileFormat:=xlCSV, CreateBackup:=False
  Next
'Excelの終了
    xlBook.Application.Quit
  Set xlBook = Nothing

投稿時間:2003/08/21(Thu) 14:21
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBでエクセル実行後
Excel上で【ウィンドウ】−【再表示】を実施すれば表示するのですよね!

VBからExcelを終了する時にxlBook.Parent.Windows(num).Visible = True を
実施してから終了して見て下さい。

VBからExcelを操作するならここの VBからエクセルを操作する(その1)の
ような方法でされた方が何かとトラブルが少ないですよ!

又、マルチポストはマナー違反ですよ。
ここのHPを利用されるなら[はじめにお読み下さい]を必ず読んで下さい。

投稿時間:2003/08/21(Thu) 15:13
投稿者名:shin1
URL :
タイトル:
Re^2: VBでエクセル実行後
> Excel上で【ウィンドウ】−【再表示】を実施すれば表示するのですよね!
【ウィンドウ】−【再表示】がクリックできない状態になっています。

> VBからExcelを終了する時にxlBook.Parent.Windows(num).Visible = True を
> 実施してから終了して見て下さい。
駄目でした・・・

>
> VBからExcelを操作するならここの VBからエクセルを操作する(その1)の
> ような方法でされた方が何かとトラブルが少ないですよ!
>
> 又、マルチポストはマナー違反ですよ。
> ここのHPを利用されるなら[はじめにお読み下さい]を必ず読んで下さい。
すみませんでした。
他に書き込んだときは時間に余裕があったのですが、突然急ぎになってしまって・・・

終了後にもう一度同じファイルを開いて「メッセージや警告メッセージを表示させない」を
表示するようにして閉じるとうまく行きますが、これでは、「変更を保存しますか?」の
メッセージが表示されてしまいます。ここで、「いいえ」をクリックする方法は
無いのでしょうか?

'Excelの終了
    xlBook.Application.Quit
この部分を
'Excelの終了
    xlBook.Application.Quit
    xlBook.Application.Quit
    Set xlBook = Nothing
    Set xlBook = GetObject(k_name)
    xlBook.Parent.Windows(num).Visible = True
    xlBook.Application.DisplayAlerts = True
    xlBook.Application.Quit
に修正

投稿時間:2003/08/21(Thu) 16:12
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: VBでエクセル実行後
'Excelの終了
  '   xlBook.Application.DisplayAlerts = True
     xlBook.Parent.Windows(num).Visible = True
     xlBook.Application.Quit
     Set xlBook = Nothing

では!
それでだめなら
VBからExcelを操作するならここの VBからエクセルを操作する(その1)の
ような方法に変更して下さい。

投稿時間:2003/08/21(Thu) 16:33
投稿者名:shin1
URL :
タイトル:
Re^4: VBでエクセル実行後
>  'Excelの終了
>   '   xlBook.Application.DisplayAlerts = True
>      xlBook.Parent.Windows(num).Visible = True
>      xlBook.Application.Quit
>      Set xlBook = Nothing
>
> では!
> それでだめなら
>  VBからExcelを操作するならここの VBからエクセルを操作する(その1)の
>  ような方法に変更して下さい。

上記の方法でも駄目でした・・・
「VBからエクセルを操作する(その1)」を参考に変更したいと思います。
いろいろと、ご無礼なこともありましたが、お答えいただきありがとうございました。

投稿時間:2003/08/21(Thu) 20:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: VBでエクセル実行後(原因は....)
下記を試して見て下さい。
原因はFileFormat:=xlCSVの部分でエラーが発生。
(変数の宣言は問題ないのでしょうか?)

Private Sub Command1_Click()
    Dim xlBook   As Object
    Dim num      As Integer
    Dim fsu      As Integer
    Dim f_nam()  As String
    Dim i1       As Integer
    Dim fld_name As String
    Dim sys_name As String
    Const xlCSV = 6
    
    Set xlBook = GetObject("c:\test.xls")
    'Bookを非表示
    num = xlBook.Application.Workbooks.Count
    xlBook.Parent.Windows(num).Visible = False
    'メッセージや警告メッセージを表示させない
    xlBook.Application.DisplayAlerts = False
    fsu = 0
    fsu = xlBook.Worksheets.Count
    ReDim Preserve f_nam(1 To fsu)
    For i1 = 1 To xlBook.Worksheets.Count
        f_nam(i1) = fld_name & sys_name & xlBook.Worksheets.Item(i1).Name & ".csv"
        xlBook.Sheets(xlBook.Worksheets.Item(i1).Name).SaveAs FileName:=f_nam(i1), FileFormat:=xlCSV, CreateBackup:=False
    Next
    'Excelの終了
    xlBook.Application.Quit
    Set xlBook = Nothing
End Sub

投稿時間:2003/08/22(Fri) 11:20
投稿者名:shin1
URL :
タイトル:
Re: VBでエクセル実行後(原因)
表示されなくなる原因は、プロセスに「EXCEL.EXE」が残っている事がわかりました。
そこで、コードを単純に下記のようにして実行してみましたが、やはり残ってしまいます。
ブックをオープンしている所を新規で実行すると残りません。
エクセルのファイルの方に問題があると思い、別のエクセルファイルで実行した所、
OKでした。原因は使用したエクセルファイルにあります。
でも、こんな事ってあるんですかね・・・?

投稿時間:2003/08/22(Fri) 11:40
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: VBでエクセル実行後(原因)
> でも、こんな事ってあるんですかね・・・?

間違った使い方等下場合などにファイルが壊れる可能性もあります。
ここの掲示板の質問にも時々事例はあります。
うまく解放されないとかの場合は、再現できるコードを投稿して頂かないと
判断が難しいです。(色んな原因で発生するので)

そういった間違いを少しでも減らす意味でも[事前バインディング]での
ご使用をお薦めします。
少なくてもプログラム作成中は[事前バインディング]で問題が無い事を
確認してから[実行時バインディング]に変える等をされた方が楽ですよ。

投稿時間:2003/08/22(Fri) 11:54
投稿者名:shin1
URL :
タイトル:
Re^3: VBでエクセル実行後(原因)
花ちゃん さん、数々の無礼の中、答えてもらいまして、ありがとうございました。

> > でも、こんな事ってあるんですかね・・・?
>
> 間違った使い方等下場合などにファイルが壊れる可能性もあります。
> ここの掲示板の質問にも時々事例はあります。
>
> そういった間違いを少しでも減らす意味でも[事前バインディング]での
> ご使用をお薦めします。
> 少なくてもプログラム作成中は[事前バインディング]で問題が無い事を
> 確認してから[実行時バインディング]に変える等をされた方が楽ですよ。
これからは、そのようにしてプログラムを作成していきたいと思います。