2016-09-09 2 views
0

SQL에서 데이터를 내보내는 중에 이미 .xlsx 파일을 만들 때 오류가 발생합니다. 나는 openrowset을 사용했다.openrowset을 사용하여 sql에서 데이터를 내보내는 동안 오류가 발생합니다.

그것은 대부분의 시간의 잘 작동하지만 데이터가 큰 문자열로 필드에 올 때에 삽입하는 동안,이 같은 오류가 표시 엑셀 : 문이 종료되었습니다

, 문자열이나 이진 데이터를 이 잘립니다.

데이터가 테이블에 삽입되지만 삽입하는 동안 Excel이 오류가 발생합니다. 해결책을 찾도록 도와주십시오.

+0

은 일반적으로 발생합니다

또한 https://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm#Introduction

가 여기 Excel로 SQL 서버에서 데이터를 이동하는 몇 가지 VBA 코드 : 엷게 링크를 확인하세요 해당 필드에 대해 설정된 속성의 경우 엑셀 시트의 셀 서식 확인 – Takarii

+0

openrowset을 사용하여 데이터를 내보내는 동안 허용 된 필드 당 데이터 크기는 –

+0

입니다. 필드에 입력되는 데이터가 입력되는 필드에 비해 너무 큰 경우에만이 메시지가 표시됩니다. 보아야 할 곳은 엑셀입니다. 새 파일로 전송하는 것과 달리, 데이터 유형은 현재 파일 내에 이미 설정되어 있습니다. – Takarii

답변

0

SQL Server를 Excel로 변환하면 많은 작업을 수행 할 수 있습니다. 당신이 필드에 입력하는 데이터가 너무 긴 경우

Sub ADOExcelSQLServer() 
    ' Carl SQL Server Connection 
    ' 
    ' FOR THIS CODE TO WORK 
    ' In VBE you need to go Tools References and check Microsoft Active X Data Objects 2.x library 
    ' 

    Dim Cn As ADODB.Connection 
    Dim Server_Name As String 
    Dim Database_Name As String 
    Dim User_ID As String 
    Dim Password As String 
    Dim SQLStr As String 
    Dim rs As ADODB.Recordset 
    Set rs = New ADODB.Recordset 

    Server_Name = "EXCEL-PC\EXCELDEVELOPER" ' Enter your server name here 
    Database_Name = "AdventureWorksLT2012" ' Enter your database name here 
    User_ID = "" ' enter your user ID here 
    Password = "" ' Enter your password here 
    SQLStr = "SELECT * FROM [SalesLT].[Customer]" ' Enter your SQL here 

    Set Cn = New ADODB.Connection 
    Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _ 
    ";Uid=" & User_ID & ";Pwd=" & Password & ";" 

    rs.Open SQLStr, Cn, adOpenStatic 
    ' Dump to spreadsheet 
    With Worksheets("sheet1").Range("a1:z500") ' Enter your sheet name and range here 
     .ClearContents 
     .CopyFromRecordset rs 
    End With 
    '   Tidy up 
    rs.Close 
    Set rs = Nothing 
    Cn.Close 
    Set Cn = Nothing 
End Sub 
관련 문제