2017-11-06 7 views
4
나는이 내가 수출

DoCmd.TransferSpreadsheet 문제

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "qryDataExport", strExportPath, True 

데이터 전송이해야 등을 위해 사용하고있는 구문입니다 액세스 2013에서 Excel로 쿼리를 수출하고

만의 필드 중 하나 쿼리의 제목이 Player #이고 Excel로 내보낼 때 Player .

내 보내면 #을 그대로 유지할 수 있습니까? , CustomExcelExport "qryDataExport", strExportPath

+0

쿼리 개체 내에서 대괄호로 둘러싸인 필드의 이름입니다 :

그리고 사실

DoCmd.OutputTo (모든 서식을 유지하기 위해 선택) 외부 데이터 \ 엑셀 내보내기 리본 방법의 자동화 된 버전이 보인다 당신은 수출 중입니까? – MoondogsMaDawg

+0

@ ChristopherD.- 예 표의 짧은 텍스트 형식이며 쿼리에서 [Player #] – BellHopByDayAmetuerCoderByNigh

+0

으로 표시됩니다. 11 번 게시물을보십시오. https://windowssecrets.com/forums/showthread.php/130867- csv-Export-not-keeping-number-sign-on-field-name은 AndrewKKWalker에 의해 작성되었습니다. 문제는 수출에서 예약 된 기호를 사용하고 있다는 것입니다. https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-e33eb3a9-8baa-4335-9f57- da237c63eabe? CorrelationId = 1e80e7bd-52b9-4d39-84cb-883f5fabf7a9 & ui = en-US & rs = en-US & ad = US & ocmsassetID = HA010030643 – user2676140

답변

1

귀하는 DoCmd.TransferSpreadsheet

Public Sub CustomExcelExport(QueryOrTableOrSQL As String, FileLocation As String) 
    Dim rs As DAO.Recordset 
    Dim excelApp As Object 
    Set excelApp = CreateObject("Excel.Application") 
    Set rs = CurrentDb.OpenRecordset(QueryOrTableOrSQL) 
    excelApp.Workbooks.Add 
    Dim colNo As Long: colNo = 1 
    Dim rowNo As Long: rowNo = 1 
    Dim fld As Variant 

    For Each fld In rs.Fields 
     excelApp.Cells(rowNo, colNo) = fld.Name 
     colNo = colNo + 1 
    Next fld 
    Do While Not rs.EOF 
     colNo = 1 
     rowNo = rowNo + 1 
     For Each fld In rs.Fields 
      excelApp.Cells(rowNo, colNo) = fld.Value 
      colNo = colNo + 1 
     Next fld 
     rs.MoveNext 
    Loop 
    excelApp.ActiveWorkbook.SaveAs FileLocation, 51 'xlOpenXMLWorkbook 
    excelApp.Quit 
End Sub 

전화의 한계를 처리하지 않고, .XLSX 파일로 물건을 내보내려면 다음과 같은 기능을 사용할 수 있습니다 쿼리의 형식을 유지하는 DoCmd.OutputTo을 고려하십시오. 전자의 방법은 스프레드 셋 형식에 더 중점을 둘 수 있습니다.

DoCmd.OutputTo acOutputQuery, "qryDataExport", acFormatXLSX, strExportPath 
+0

방금 ​​구문을 프로덕션 데이터베이스로 옮겼습니다. 그러면 Set rs = CurrentDb.OpenRecordset (QueryOrTableOrSQL)이라는 줄이 나타납니다. 그런 다음 프로 시저를 종료 하시겠습니까? 그래서 수출은 실제로 발생하지 않습니다. - 그리고 만약 그것이 차이가 있다면 엑셀 2013입니다. – BellHopByDayAmetuerCoderByNigh

+0

쿼리가 실제로 행을 반환합니까? 귀하의 쿼리가 0 행과 0 필드를 반환하면 그런 일이 일어납니다. –

+0

그것은 행을 반환합니다 -하지만 하나의 필드에 오류가 발생했습니다 bc 그것은 값을 입력하도록 요구하고 있습니다. 그것이 범인이 될 수 있을까요? – BellHopByDayAmetuerCoderByNigh

2

문제가 DoCmd.TransferSpreadsheet으로 재현 할 수 있지만 :