DetailPage-MSS-KB

기술 자료

기술 자료: 194124 - 마지막 검토: 2004년 6월 24일 목요일 - 수정: 4.0

 

이 페이지에서

현상

원본으로 사용하는 값이 Null이 아닌 경우 Excel DAO OpenRecordset 메서드를 사용하여 스프레드시트 연결할 때 일부 Excel 열의 값이 Null로 반환할 수 있습니다. 일반적으로 숫자 때 이런 및 동일한 Excel 열에 텍스트 데이터 형식이 혼합되었습니다.

원인

Excel 열의 데이터 형식을 결정하는 후에는 그 데이터 형식을 ISAM 드라이버가 없는 값 Null 해당 Excel 열에 대해 기본적으로 반환됩니다 것을 제한 사항은 Excel ISAM 드라이버에 의해 인해 이 문제가 발생합니다. Excel ISAM 드라이버가 처음 몇 행 실제 값을 검사하여 Excel 열의 데이터 형식을 결정하고 해당 샘플링 값 대부분의 나타내는 데이터 형식을 선택합니다.

해결 방법

이 동작에 대한 해결 방법에는 두 가지가 있습니다.
  1. Excel에서 데이터를 텍스트로 입력되어 있는지 확인. 방금 Excel 열에 텍스트로 다시 포맷하면 이 수행합니다지 않습니다. Excel에서 열을 다시 포맷 후 기존 값을 다시 입력해야 합니다. Excel에서 F5 선택한 셀에 있는 기존 값을 다시 입력할 수 있습니다.
  2. IMEX 옵션을 추가할 수 = 1; 위해 Excel OpenDatabase 메서드는 문자열을 연결합니다. 예를 들어,:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    참고: 설정 IMEX = 1 드라이버가 가져오기 모드를 사용하도록 지시합니다. 이 상태의 레지스트리 설정을 ImportMixedTypes = 텍스트 발견했습니다. 혼합된 데이터를 텍스트로 변환되는 업데이트되도록 합니다. 안정적으로 작동하려면 이 경우 TypeGuessRows 레지스트리 설정을 수정해야 할 수도 있습니다 = 8. 있는 ISAM 드라이버가 기본적으로 맨 처음 8개 행 찾고 해당 샘플링 데이터 형식을 결정합니다. 이 8개 행 샘플링 IMEX 설정한 다음 모든 숫자 경우 = 1 기본 데이터 형식이 텍스트로 변환, 숫자 남아 있게 됩니다.

    주의해야 합니다 해당 IMEX = 1 indiscriminately 사용할 수 없습니다. 이것은 IMPORT 결과를 작업을 하면 예측할 수 있도록 모드 추가합니다 또는 이 모드에서 데이터의 업데이트합니다.

    IMEX 가능한 설정이:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    위에서 설명한 설정을 위치한 레지스트리 키가 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel

    Excel 스프레드시트를 열 머리글 텍스트를 숫자 데이터로 경우에 대한 내용은 이 문서의 "참조" 절을 참조하십시오.

현재 상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

문제를 재현하기 위한 단계

이 문제는 복제하려면 먼저 Excel 통합 기본 Sheet1 스프레드시트를 만듭니다. 다음 값은 - 123 456, bbb, 789 aaa Sheet1의 첫 번째 열에 입력하십시오. 이 통합 문서의 C:\Temp 디렉터리의 저장하고 Book1.XLS 이름을 지정하십시오.

Visual Basic에서 새 표준 EXE 프로젝트를 만들고 이 단계를 수행하십시오.
  1. Microsoft DAO 3.5 개체 라이브러리에 대한 참조를 확인하십시오. 기본 Visual 6 .0에서 이 Microsoft DAO 3.51 개체 라이브러리에 됩니다.
  2. 한 CommandButton 새 폼에 추가하십시오.
  3. 폼의 일반 선언 구역에 다음 코드를:
          Dim Db As Database
          Dim Rs As Recordset
    
          Private Sub Command1_Click()
              Set Rs = Db.OpenRecordset("Sheet1$")
              'This will print the spreadsheet Text values as Nulls.
    
              Do While Not Rs.EOF
                  Debug.Print Rs(0)
                  Rs.MoveNext
              Loop
    
          End Sub
    
          Private Sub Form_Load()
              'HDR refers to the Excel header row.
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                   False, True, "Excel 8.0; HDR=NO;")
    
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
              Db.Close
              Set Db = Nothing
    
          End Sub
    
    						
    F5 키를 눌러 프로젝트를 실행하고 참고 디버그 창에 텍스트 값이 Null로 인쇄됩니다. 다음 Excel 스프레드시트 값 대부분의 텍스트 경우 위의 코드에서 결과가 되돌릴 수 있습니다. 즉, 숫자 값을 Null로 다시 가져올 수 있습니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

190195  (http://support.microsoft.com/kb/190195/EN-US/ ) : HOWTO: DAO 사용하여 Excel 시트 시작 정보 추출

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
키워드: 
kbmt kbprb KB194124 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.