2017-12-25 39 views
0

액세스 쿼리에서 Excel 통합 문서로 레코드 집합을 내보내는 중입니다. 내보내기가 잘되고, 필자의 구문은 사용자에게 필 요한 파일 이름/위치를 묻는 메시지를 표시합니다. 그러나 파일은 실제로 저장되지 않습니다. 이 기능을 사용하기 위해 프로세스에서 단계가 없거나 코드 변경이 필요합니까?Access VBA에서 Excel 통합 문서 저장

Sub ETE() 

    Dim ExcelApp As Object, wbOutput As Object, wsOutput As Object, bExcelOpened As Boolean 
    Dim db As DAO.Database, rs As DAO.Recordset, targetRow As Long 
    Dim targetPath As String, fd As FileDialog, Title As String, saveInfo As Variant 

    DoCmd.Hourglass True 

    Set ExcelApp = GetObject(, "Excel.Application") 
    If Err.Number <> 0 Then 
     Err.Clear 
     On Error GoTo Error_Handler 
     Set ExcelApp = CreateObject("Excel.Application") 
     bExcelOpened = False 
    Else 
     bExcelOpened = True 
    End If 
    On Error GoTo Error_Handler 
    ExcelApp.ScreenUpdating = False 
    ExcelApp.Visible = False 
    Set wbOutput = ExcelApp.Workbooks.Add() 
    Set wsOutput = wbOutput.Sheets(1) 
    Set db = CurrentDb 
    Set rs = db.OpenRecordset("qryTakeDataToExcel", dbOpenSnapshot) 

    With rs 
     If .RecordCount <> 0 Then 
      'Write the data to Excel 
     End If 
    End With 
    Set fd = Application.FileDialog(msoFileDialogSaveAs) 

    With fd 
     .AllowMultiSelect = False 
     .Title = "Select Save Location And File Name" 
     .InitialFileName = "File_" & Format(Now(), "mmddyyyy") & ".xlsx" 

     If .Show = True Then 
      wbOutput.SaveAs FileName:=fd.InitialFileName, FileFormat:=50 
      wbOutput.Close 
     End If 
    End With 

End Sub 

답변

1

귀하의 신고 기호가 예상대로 작동하지 않아 올바른 파일 이름과 위치를 얻지 못하고 있습니다.

파일 이름을 반환하려면 .InitialFileName이 아니라 .SelectedItems(1)을 사용해야합니다. .InitialFileName은 초기 값을 설정하고 전체 경로를 반환하지 않습니다.

If .Show = True Then 
     wbOutput.SaveAs FileName:=.SelectedItems(1), FileFormat:=50 
     wbOutput.Close 
    End If 

유효한 오류 처리기를 사용했다면 잡는 것이 더 쉬울 것입니다. 기본 오류 처리기를 사용하려면 On Error GoTo 0을 사용하십시오.

+0

여전히 파일을 저장하지 않습니다. fd가 이름과 위치를 묻는 메시지를 표시하고 확인을 클릭하면 책 1의 변경 사항을 저장할지 묻는 Excel 메시지가 나타납니다.이 프롬프트에서 저장을 수동으로 클릭하면 통합 문서가 저장됩니다. –

+1

'.close' 메쏘드의 파일 위치,'wbOutput.Close True, .SelectedItems (1)' –

+0

그것은 저장되지만 엑셀의 빈 인스턴스는 열어 둡니다. 통합 문서가 없습니다. 저장 후 Excel을 완전히 닫는 명령은 무엇입니까? –