2017-04-14 16 views
1

ファイルをエクスポートするボタンがありますが、まずそのファイルが存在するかどうかを確認します。そうであれば、ファイルを削除し、新しい場所に書き出します。問題は、このボタンをクリックするとすぐにデータベースがクラッシュすることです。なぜどんなアイデア?この問題は、最近になって現れたばかりです。以前はAcess 2013とAccess 2016の両方で正常に動作していました。環境は、私たちが行う大部分がI.Tによって管理されるビジネス環境(ラップトップ型ではなく、個人用のものではありません)です。管理者MS Access:スプレッドシートを削除しようとするとDBがクラッシュする

コード:

Private Sub Command370_Click() 

    Dim myQueryName As String 
    Dim myExportFileName As String 

    myQueryName = "qry_SAP_FGCheck" 
    myExportFileName = "J:\2017\SAP\SAPExports\DailyFGCheck_Export.xlsx" 
    If Len(myExportFileName) > 0 Then 
     On Error GoTo Err_Msg 
     Kill myExportFileName 
    End If 
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 

Err_Msg: If (Err.Number = 70) Then MsgBox "Error: (" & Err.Number & ")" & Err.description & ". You must close the spreadsheet in order to export.", vbOKOnly Else Resume Next 


End Sub 

答えて

2

おそらくボタンのクリックイベントに呼ばれるマシンにそのようなディレクトリがありません。ドライブ文字J:\を使用して、ネットワークディレクトリへのユーザー定義のマップされたドライブパスを提案しました。ユーザーは異なるドライブ文字にマップされている可能性があります。 CMDラインnet useで見つけることができる完全なUNCを試してみてください:あなたは(常にゼロでない)VBA文字列の長さは、割り当てるようにチェックしているので、

myExportFileName = "\\SomeNetwork\Path\2017\SAP\SAPExports\DailyFGCheck_Export.xlsx" 

は実際には、今のファイルは常に削除されます実際のファイルシステムオブジェクトの直前であり、実際のファイルシステムオブジェクトではありません。

そのようなディレクトリのファイルパスが削除またはエクスポートする前に存在している場合、コンディショニングを考えてみましょう:ディレクトリがユーザーに利用可能であるかは問題であっても上書きを回避しないように

If Len(Dir(myExportFileName, vbDirectory)) > 0 Then 
    On Error GoTo Err_Msg 
    Kill myExportFileName 

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 
           myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 
End If 

がさえ、データベースの現在のパスへの保存を検討他のユーザの輸出。

myExportFileName = Application.CurrentProject.Path & "\DailyFGCheck_Export.xlsx" 

If Len(Dir(myExportFileName, vbDirectory)) > 0 Then 
    On Error GoTo Err_Msg 
    Kill myExportFileName 

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 
           myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 
End If 

、理想的には、各ユーザーは、ローカルのCPU(すなわち、C:\ドライブ)の彼/彼女の自身のフロントエンドを使用しています。

関連する問題