2016-04-16 4 views
0

は、私は、Excelブックにサブフォームの結果をエクスポートするためのいくつかのコードを持っています。コードは正常に動作し、小さな問題は1つしかありません。私が輸出すると、Excelのファイルが開きます。このExcelファイルが開かれ、ユーザーは再び輸出をしたい場合は、ファイルが開いており、新しいExcelオブジェクトは、同じ名前のファイルを保存したいので、私はエラー1004アクセスVBA - 近いExcelオブジェクト

を受け、このエラーが生成されます。私が望むのは、すべてがキャンセルされ、以前に作成されたブックを閉じる必要があることをユーザーに知らせることだけです。これは私が試したものです:

If Err.Number = 1004 Then 

MsgBox "Error. You have opened Excel file, that has same name as this file name should be. Please close that file first !", vbCritical 

Cancel = True 

Set wb = Nothing ' wb is wb=XcelFile.Workbooks.Add 

Set XcelFile = Nothing ' Xcelfile is Xcelfile= New Excel.Application 

End If 

このコードは、ユーザーがそのファイルを閉じるとエクスポートが実行できます - 古いファイルは上書きされます。問題はExcelアプリケーションがまだWindowsタスクマネージャで開かれているため、Excelオブジェクトが正しく閉じられていないことです。

誰もがよりよい解決策を持っていますか?

P.S:それは同じ名前ではないでしょうが、私はそれが固定得ることができないように、私は、エクセルのファイル名に番号を含む試してみました。

編集:ここでは、私は、ファイル名

Dim i as Integer 

     ExcelFilename = "RESULTS_" & Format(Date, "dd/mm/yyyy") & "_" & i & "_" & ".xlsx" 

i = i + 1 

を変更しようとした方法である「i」は、私がもう一度コードを実行したときにそれが値です変更されません。どうすれば増やすことができますか?これは...

答えて

1

私は簡単な解決策を提案します:競合を避けるためにファイル名に時間を追加してください。ノー

Static i As Integer 

Static variables

+0

はい、これもテストしましたが、RESULTS_16_04_2016-1、RESULTS_16_04_2016-2などのように数値が増えることをお勧めします。 – LuckyLuke82

+0

@ LuckyLuke82:編集 – Andre

+0

を参照してください。ありがとうAndre !!! – LuckyLuke82

0

を私の問題を解決するだろうあなたは、Excelオブジェクトを開いての順序でそれらを閉じるには非常に厳格でなければならない - この例で行ったように:

Public Sub RenameWorkSheet() 

    Dim xls  As Excel.Application 
    Dim wkb  As Excel.Workbook 
    Dim wks  As Excel.Worksheet 

    Set xls = New Excel.Application 
    Set wkb = xls.Workbooks.Open("c:\test\workbook1.xlsx") 
    Set wks = wkb.Worksheets(1) 

    wks.Name = "My New Name" 
    wkb.Close True 

    Set wks = Nothing 
    Set wkb = Nothing 

    xls.Quit 

    Set xls = Nothing 

End Sub 
+0

を試す限り、アプリケーションが実行されているようインクリメントされます数については

ExcelFilename = "RESULTS_" & Format(Now(), "yyyy-mm-dd_hh-nn-ss") & ".xlsx" 

同じ名前のExcelファイルが開いている間、これはunfortunally動作しません。私は解決策がファイル名を動的に変更することだと思う。しかし、私はこれを達成することはできません、私の編集を見て、あなたは私がこれをどのように試して見るでしょう。 – LuckyLuke82

+0

もちろん、Excelが既にファイルを開いている場合は、再度開くことはできません。 – Gustav

+0

はい、ただしファイルの名前を変更するとコードが機能します。だから私はファイル名のいくつかの番号を増やす必要があります。しかし、私はこれのための適切なコードを取得することはできません、ループのいくつかを実行する必要があります。 – LuckyLuke82

関連する問題