Excel 워크 시트의 내용을 가져 와서 다른 응용 프로그램에서 가져 오기 위해 CSV 파일로 내보내는 매크로를 작성했습니다.vba를 사용하여 Excel에서 앞에 0이있는 숫자 텍스트 복사
내 문제는 내보내기시 숫자로 해석 될 수있는 텍스트가 포함 된 셀이 숫자로 변환된다는 것입니다. 즉, 텍스트에 선행 0이 있으면이 값이 손실됩니다.
그래서,이 같은 데이터 :
자산 0,100,738 2003년 1월 5일 612
이
자산, 100738,1/05/2003로 내보낼 것, 612
내 코드 :
Public Sub ExportSheetAsCSV(ByRef sh As Worksheet)
Dim dataToExport As Excel.Range
Dim newWrkbk As Excel.Workbook
Dim FSO As New FileSystemObject
Dim dstdir As String
Dim dstpath As String
Set dataToExport = sh.UsedRange
Set newWrkbk = newWorkbook(1, ActiveWorkbook)
'' Copy Step:
newWrkbk.Sheets("Sheet1").Range("A1").Resize(dataToExport.Rows.Count, dataToExport.Columns.Count).Value = dataToExport.Value
dstdir = FSO.BuildPath(FSO.BuildPath(ActiveWorkbook.path, "CSVs"), FSO.GetBaseName(ActiveWorkbook.Name))
dstpath = FSO.BuildPath(dstdir, sh.Name & ".csv")
MkDirStructure dstdir
newWrkbk.SaveAs Filename:=dstpath, FileFormat:=xlCSV, CreateBackup:=False, Local:=True
newWrkbk.Close False
End Sub
단계별로 살펴보면 사본 단계 (저장 단계와 반대)에서 앞의 0이 사라지는 것을 볼 수 있습니다.
이 질문은 VBA: preceding zeros dropped when copied over과 비슷한 문제를 다루지 만 주어진 답변 중 어느 것도 저에게 맞지 않습니다. 허용 된 대답은 텍스트 잘못된 세포를 변환하는 것입니다 (그리고 다른 최고 대답은 VBA의의 NumberFormat를 사용하여 동일한 작업을 수행하는 것입니다)하지만,
- 나는 세포 그래서이 변환 될 필요가 사전에 알 수없는 I 텍스트로 변환하면되도록
- 셀의 값은 식 불편 갱신된다, 다음 식의 텍스트
- 날짜 값들이 정수 표현
- 이것으로 변환 될 셀의 값이됩니다 심지어 작동하지 않습니다. 셀을 텍스트로 변환하면 선행 0은 여전히 제거됩니다.
아무도이 문제에 대한 해결책을 갖고 있습니까?
감사
안녕하세요 bp696, 답장을 보내 주셔서 감사합니다. 이것은 http : // stackoverflow의 두 번째 대답과 같습니다.com/questions/493780/vba-preceding-zero-copied-over는 나를 위해 작동하지 않았습니다. 다시 이것을 보면서 나는 그 대답과 당신의 생각을 오해했다고 생각합니다. .NumberFormat = "@"을 사용하여 복사를 시도했으나 문제를 해결하지 못했습니다. 내가 복사 할 범위를 다시 포맷하면, 이는 주요 0 문제를 해결합니다. 원본 범위가 아닌 대상 범위를 텍스트로 다시 포맷한다는 것을 확인할 수 있습니까? – laffoyb
그러나이 솔루션을 사용하면 날짜가 dd/mm/yyyy에서 mm/dd/yyyy로 다시 형식화되어 다른 문제를 일으키는 문제가 발생합니다. – laffoyb
@tensorproduct는 대상 범위를 의미했습니다 ... 당신은 날짜 열을 제외하고 범위를 선택하고 텍스트로 변환 할 수 있습니다 .... – bp696