사용자가 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형식