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

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

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

1) 새 워크시트를 시작하고 2) CSV를 여는 대신 가져오기를 통해 그렇게 할 수 있다는 것을 알고 있습니다. 날짜가 있는 열을 "텍스트"로 설정하고 완료합니다.

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

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

ChDir "C:\RoomTimerData\"

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

통합 문서.파일 열기 이름:=MyFile

답변1

일반적으로 텍스트 가져오기 대화 상자의 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

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

  • xl일반형식
  • xlTextFormat
  • xlSkip열
  • xlDMY형식
  • xlDYM형식
  • xlEMD형식
  • xlMDY형식
  • xlMYD형식
  • xlYDM형식
  • xlYMD형식

관련 정보