[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/08/24(Wed) 15:08
投稿者名:あい
URL :
タイトル:
VBからのEXCEL出力
以下のようなソースでVB6.0からEXCELファイルの作成を行っています。
画面上には、出力中のファイルを表示したくありません。
このまま実行する分には問題ないのですが、
出力処理中に別のEXCELファイルを開くと
出力中のBOOKまで一緒に開いてしまい、
出力処理が終了するまでその別のEXCELファイルを
参照・編集することができません。
以下のような状態です。

EXCELをまったく起動していない状態
→処理実行
→実行中に別のBOOKを開く
→BOOKがふたつ開き、編集できない。
→ここでEXCELを終了させるとエラーになる。

出力処理中に別のBOOKに対して作業を行うことはできるのでしょうか?

ちなみに、処理実行前に別のBOOKを開いておいて、
処理を実行した場合は、別のBOOKを編集することはできます。
また、出力中のBOOKが表示されることもありません。

---------------------------
EXCEL出力を行う部分のソース
---------------------------
    Dim objExcel            As Object
    Dim objWb               As Object
    Dim objSheet            As Object
        
    'Excel操作用オブジェクト初期化
    Set objExcel = CreateObject("Excel.Application")

    objExcel.Visible = False
    objExcel.DisplayAlerts = False    
    objExcel.ScreenUpdating = False
    
    Set objWb = objExcel.Workbooks.Add
    Set objSheet = objWb.Sheets(1)
    objSheet.Name = "シート名"
   
  ''セルへのデータ出力など

    '保存
    objWb.SaveAs mstrFileName
    objWb.Close
    objExcel.ScreenUpdating = True
    Set objExcel = Nothing
----------------------------------
以上です。
よろしくお願いします。

投稿時間:2005/08/24(Wed) 18:32
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBからのEXCEL出力
> 出力処理中に別のEXCELファイルを開くと
> 出力中のBOOKまで一緒に開いてしまい、

Excelファイル自体をダブルクリックで開いていませんか?
Excel.EXE を起動してから、ファイルを読み込めば別のExcelが起動
するかと思うのですが。

投稿時間:2005/08/25(Thu) 10:05
投稿者名:あい
URL :
タイトル:
Re^2: VBからのEXCEL出力
回答ありがとうございます。

> Excelファイル自体をダブルクリックで開いていませんか?
> Excel.EXE を起動してから、ファイルを読み込めば別のExcelが起動
> するかと思うのですが。

おっしゃるとおり、エクスプローラ等から直接ファイルを開いています。
確かに、Excel.EXEを別に起動すればうまくいくことも確認しました。

直接ファイルを起動した場合にこのような動きになるのは
回避しようがないのでしょうか?

投稿時間:2005/08/25(Thu) 11:04
投稿者名:YK
Eメール:
URL :
タイトル:
Re^3: VBからのEXCEL出力
こんにちは。

> 直接ファイルを起動した場合にこのような動きになるのは
> 回避しようがないのでしょうか?

二つのクラスモジュールでWithEventsでエクセルのイベントを拾ってすれば
出来ます。

1つ目のクラスに現在作業中のクラスを登録して
この中でエクスプローラ等から直接開かれたファイルをチェックして
ファイル名を取得後クローズ
別のインスタンスを作成して取得したファイル名でOpenする
このインスタンスを2つ目のクラスに登録
というような流れになります。