Excel에서 CSV의 날짜를 매크로의 텍스트로 처리하도록하는 방법


1

사용자가 CSV 파일을 선택한 다음 조작 할 수있는 매크로가 있습니다. 그러나 1/2/12와 같은 것을 포함하는 셀을 날짜로 처리합니다. 이 문자열을 날짜가 아닌 텍스트로 유지해야합니다.

1) 새 워크 시트를 시작하여 2) CSV를 열지 않고 가져옵니다. 날짜가있는 열을 "텍스트"로 설정하고 완료하십시오.

문제는 사용자가 파일을 선택할 수 있도록 데이터> 가져 오기를 중단하는 방법입니다. 그 후, 매크로는 계속 열 형식을 설정하고 가져 오기를 완료 한 후 데이터 조작을 수행해야합니다.

편집 : 다음은 매크로의 관련 코드입니다.

ChDir "C : \ RoomTimerData \"

MyFile = Application.GetOpenFilename ( "쉼표로 구분 된 값 ( .csv), .csv")

통합 문서 열기 fileName : = MyFile


기존 매크로에 소스를 추가하면 도움이됩니다.
Isaac Rabinovitch

답변:


0

일반적으로 텍스트 가져 오기 대화 상자의 3 단계 중 3 단계로 가져온 각 열의 데이터 유형을 선택합니다. 잘못된 형식을 피하려면 텍스트 를 형식으로 사용하면됩니다 .

그러나 VBA 매크로를 사용하여 CSV 파일을 가져 오는 것 같습니다. 그래서 나는 방금 그런 텍스트 가져 오기를 기록했습니다 .

With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;C:\test.csv", Destination:=Range("$A$1"))
    .Name = "test_1"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 1) 'THIS IS THE MAGIC LINE!
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With

또한 excel-help에서이 예제를 살펴보십시오 TextFileColumnDataTypes.

Set shFirstQtr = Workbooks(1).Worksheets(1) 
Set qtQtrResults = shFirstQtr.QueryTables _
        .Add(Connection := "TEXT;C:\My Documents\19980331.txt", _
        Destination := shFirstQtr.Cells(1, 1))
With qtQtrResults
    .TextFileParseType = xlFixedWidth
    .TextFileFixedColumnWidths = Array(5, 4)
    .TextFileColumnDataTypes = _
        Array(xlTextFormat, xlSkipColumn, xlGeneralFormat)
    .Refresh
End With

사용할 수있는 형식은 다음과 같습니다.

  • xlGeneralFormat
  • xlTextFormat
  • xlSkipColumn
  • xlDMYFormat
  • xlDYMFormat
  • xlEMDFormat
  • xlMDYFormat
  • xlMYDFormat
  • xlYDMFormat
  • xlYMDFormat

문제는 사용자가 파일을 선택할 수 있어야한다는 것입니다. 매크로가 실행될 때마다 이름이 다르며 예측할 수 없습니다. 내가 생각한 유일한 다른 방법은 매크로 쉘에 <space>를 날짜 앞에 두는 유틸리티를 갖는 것입니다. 그러면 Excel에서 날짜로 해석하지 못하게됩니다.
hdhondt

또는 texteverey col의 기본 입력으로 사용하고 사후 경고 형식을 파악하거나 '매일 파일을 구문 분석하여 매일 전을 배치 할 수 있습니다. 그러나 데이터를 정확하게 입력 text하려면 형식 을 사용하는 것이 좋습니다.
Jook

문제는 Excel에서 CSV를 가져올 때 셀 서식을 재정의한다는 것입니다. 가져 오기 중에 텍스트라고 말하지 않는 한 Excel은 셀 서식을 무시합니다. 어쨌든, 실제 문제는 사용자가 파일을 선택할 수 있도록 매크로를 "중지"해야한다는 것입니다. 그 후 매크로는 먼저 날짜 열의 텍스트를 선택한 다음 가져 오기를 완료하여 계속 진행해야합니다.
hdhondt

방금 GetOpenFilename을 사용하여 사용자에게 파일을 묻는 메시지를 표시 한 다음 Connection : = "TEXT;"를 사용하여 변수를 연결할 수 있음을 깨달았습니다. & Myfile. 도와 주셔서 감사합니다.
hdhondt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.