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

投稿時間:2004/02/07(Sat) 05:17
投稿者名:よよよ
Eメール:yoshika_h@hotmail.com
URL :
タイトル:
処理中のExcelを保存せずに削除したい
教えて下さい!

ただいま、VBからEXCELにデータをはり、それを保存・出力する処理を作っています。
ただ、途中でエラーが出た場合に、処理中のexcelを削除し、処理を中断する
場合、どうしたらいいのかわかりません。

エラー後、CloseしてもExcelファイルがテンプレートと同じ状態で保存されます。

投稿時間:2004/02/07(Sat) 11:32
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 処理中のExcelを保存せずに削除したい
> ただいま、VBからEXCELにデータをはり、それを保存・出力する処理を作っています。
> ただ、途中でエラーが出た場合に、処理中のexcelを削除し、処理を中断する
> 場合、どうしたらいいのかわかりません。
> エラー後、CloseしてもExcelファイルがテンプレートと同じ状態で保存されます。

現状の処理は、どのようになっているのでしょうか。

私の場合は、テンプレートファイルを使う際には、

   Set XL = CreateObject("Excel.Application")
   XL.Interactive = False
   Set WB = XL.Workbooks.Add( 『拡張子XLTファイルへのフルパス』 )
   XL.Visible = True
     ……WBに対するデータ処理……
   XL.Interactive = True
   If Err.Number = 0 Then
       If 『Excelデータをファイルに保存する場合』 Then
          WB.SaveAs 『ファイル名のフルパス』, 『保存形式』
          Set WB = Nothing
          XL.Quit
       Else    '『Excelを閉じない場合(ファイルへの保存はユーザー任せ)』
          Set WB = Nothing
       End If
   Else
       ……エラーログ出力……
       'Excelを閉じる
       WB.Close False
       Set WB = Nothing
       XL.Quit
   End If
   Set XL = Nothing

のように処理していますが、『テンプレートと同じ状態で保存される』事は無いようです。

投稿時間:2004/02/07(Sat) 13:24
投稿者名:よよよ
Eメール:yoshika_h@hotmail.com
URL :
タイトル:
Re^2: 処理中のExcelを保存せ流れとしてはずに削除したい
流れとしては

1.テンプレートファイルの取得

2.出力Excelファイルパス作成

3.テンプレートコピー
    FileCopy テンプレートパス, 出力ファイルパス

    Set objOutputExcel = CreateObject("OutputExcel.ClsOutputExcel")

4.EXCELファイルオープン
    objOutputExcel.subOpenWorkBook(出力場所パス, "Sheet1")

    objOutputExcel.Visible = True    
    objOutputExcel.ScreenUpdating = True


5.Excel貼付け処理
            ・
            ・
            ・


6.エラーがあったら処理中断、Excelを閉じる
    objOutputExcel.objExcel_wb.Close
    set objOutputExcel = Nothing

教えていただいたものと比べたのですが、あまりかわらいないような・・・
(本当に初心者なのですいません)
Outファルダにはテンプレートの元の更新時間・同じ内容で保存されます。
ただ、ファイル名はVB上で指定したファイル名になっています。

何か足りない処理などがあるのでしょうか?

投稿時間:2004/02/07(Sat) 13:58
投稿者名:ak
Eメール:
URL :
タイトル:
Re^3: 処理中のExcelを保存せ流れとしてはずに削除したい
こんにちは。

一般的な方法は

 1.テンプレートを開く

 2.開いたテンプレートをVBから編集

 3.テンプレートと違う場所または違う名前で保存する。

です。

わざわざテンプレートをコピーして使用する必要は無いと思います。

それにエラーが発生したら保存せずに終了とありますが、
テンプレートを開く前にVBから編集するデータの内容をチェックして
それから開くようにすればまずエラーは発生しないでしょう。

データは合っているのにエラーが発生する場合はバグです。

途中で閉じる事を考える前にそのエラーの原因を突き止め修正する方が
先かと思います。

投稿時間:2004/02/07(Sat) 14:30
投稿者名:よよよ
URL :
タイトル:
Re^4: 処理中のExcelを保存せ流れとしてはずに削除したい
なるほど。。。。

処理の流れを検討してみます。

魔界の仮面弁士さん、akさんありがとうございました!

投稿時間:2004/02/07(Sat) 18:21
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 処理中のExcelを保存せ流れとしてはずに削除したい
> 教えていただいたものと比べたのですが、あまりかわらいないような・・・

私の書いた処理の流れを、コードではなく言葉で説明すれば、
   Workbooks.Open で、「xlsファイルを開いて、そのブックを編集する」
ではなく、
   Workbooks.Add で、 「xltファイルを基にした新規ブックを編集する」
という事です。

xls(Excelブック)形式では無く、xlt(Excelテンプレート)形式であるという点と、
Openメソッドではなく、Addメソッドで開いているという点に注意してください。


>     objOutputExcel.subOpenWorkBook(出力場所パス, "Sheet1")

『subOpenWorkBook』というのは何でしょうか。(Excelのメソッドでは無いですよね?)