따옴표 없이 Excel 파일을 .txt 형식으로 저장
저는 A열에 데이터가 있는 엑셀 시트를 가지고 있습니다.세포에는 많은 특별한 문자들이 있습니다.시트를 .txt 형식으로 저장하면 각 줄의 시작 부분에 역콤마가 표시됩니다.수동으로 파일을 저장하고 매크로로 .txt 형식으로 저장해 보았습니다.그것은 왜 그럴까?어떻게 제거합니까?견적을 제거할 수 없습니다.사진 첨부
이 질문에 대한 답변은 이미 끝났지만 나중에 다른 사람이 발견할 경우를 대비해 대안을 제시하고자 했습니다.
필요한 구분 기호에 따라 코드를 작성하지 않고 이 작업을 수행할 수 있습니다.원래 질문에는 원하는 출력 유형에 대한 자세한 내용이 나와 있지 않지만 다음과 같은 대안이 있습니다.
PRN 파일 형식
가장 쉬운 선택사항은 파일을 "형식화된 텍스트(공백 구분)" 유형으로 저장하는 것입니다.VBA 코드 라인은 다음과 유사합니다.
ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False
Excel 2007에서는 파일 이름 끝에 .prn 파일 확장자가 표시되지만 수동으로 이름을 변경하면 .txt로 변경할 수 있습니다.
Excel 2010에서는 다른 이름으로 저장 대화 상자에서 원하는 파일 확장자를 지정할 수 있습니다.
한 가지 중요한 점은 텍스트 파일에 사용되는 구분 기호의 수가 Excel 열의 너비와 관련이 있다는 것입니다.
관찰:
다음이 됩니다.
이 코드는 당신이 원하는 것을 해줍니다.
논리
- 사용자 임시 디렉토리에 파일을 TAB로 구분된 파일로 저장
- 텍스트 파일을 한 번에 읽기
- 를 바꿉니다.
""
빈칸으로 새 파일에 동시에 씁니다.
코드
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
'~~> Change this where and how you want to save the file
Const FlName = "C:\Users\Siddharth Rout\Desktop\MyWorkbook.txt"
Sub Sample()
Dim tmpFile As String
Dim MyData As String, strData() As String
Dim entireline As String
Dim filesize As Integer
'~~> Create a Temp File
tmpFile = TempPath & Format(Now, "ddmmyyyyhhmmss") & ".txt"
ActiveWorkbook.SaveAs Filename:=tmpFile _
, FileFormat:=xlText, CreateBackup:=False
'~~> Read the entire file in 1 Go!
Open tmpFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
'~~> Get a free file handle
filesize = FreeFile()
'~~> Open your file
Open FlName For Output As #filesize
For i = LBound(strData) To UBound(strData)
entireline = Replace(strData(i), """", "")
'~~> Export Text
Print #filesize, entireline
Next i
Close #filesize
MsgBox "Done"
End Sub
Function TempPath() As String
TempPath = String$(MAX_PATH, Chr$(0))
GetTempPath MAX_PATH, TempPath
TempPath = Replace(TempPath, Chr$(0), "")
End Function
스냅샷
실제 워크북
저장 후
음, 이건 어때요?
세포를 복사합니다.
메모장을 엽니다.
붙여넣기.
따옴표도, 쉼표도 없고 OP가 요청한 특수 문자를 유지합니다.그것은 또한 OP가 나쁜 것(또는 좋은 것)으로 언급하지 않은 첨부된 사진과 마찬가지로 캐리지 리턴으로 묘사됩니다.
원하는 결과를 제공하는 간단한 대답이 왜 저에게 부정적인 점수를 주는지 잘 모르겠습니다.
오후의 대부분을 이 일에 보냈습니다.
파일에 쓰는 일반적인 방법은 두 가지가 있는데, 첫 번째 방법은 직접 파일 액세스 "쓰기" 문입니다.따옴표가 추가됩니다.
두 번째는 "액티브 워크북"입니다.다른 이름으로 저장" 또는 "활성 워크시트"를 선택합니다.SaveAs"는 둘 다 활성 워크북의 파일 이름을 변경하는 매우 나쁜 부작용을 일으킵니다.
여기서의 해결책은 제가 온라인에서 찾은 몇 가지 해결책의 혼합입니다.기본적으로 다음과 같은 작업을 수행합니다. 1) 선택한 셀을 새 워크시트로 복사 2) 각 셀을 한 번에 하나씩 반복하여 열려 있는 파일로 "인쇄" 3) 임시 워크시트를 삭제합니다.
이 함수는 선택한 셀에서 작동하며 파일 이름에 대한 문자열을 가져오거나 파일 이름에 대한 프롬프트를 표시합니다.
Function SaveFile(myFolder As String) As String
tempSheetName = "fileWrite_temp"
SaveFile = "False"
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Set myRange = Selection
'myRange.Select
Selection.Copy
'Ask user for folder to save text file to.
If myFolder = "prompt" Then
myFolder = Application.GetSaveAsFilename(fileFilter:="XML Files (*.xml), *.xml, All Files (*), *")
End If
If myFolder = "False" Then
End
End If
Open myFolder For Output As #2
'This temporarily adds a sheet named "Test."
Sheets.Add.Name = tempSheetName
Sheets(tempSheetName).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To LastRow
For j = 1 To LastCol
CellData = CellData + Trim(ActiveCell(i, j).Value) + " "
Next j
Print #2, CellData; " "
CellData = ""
Next i
Close #2
'Remove temporary sheet.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Indicate save action.
MsgBox "Text File Saved to: " & vbNewLine & myFolder
SaveFile = myFolder
함수 종료
이 질문의 답은 이 질문에 대한 답을 훨씬 더 간단하게 제공했습니다.
쓰기는 나중에 입력과 함께 사용되는 컴퓨터에서 읽을 수 있는 파일을 생성하도록 설계된 특수 명령문입니다.
데이터를 만지작거리지 않으려면 인쇄를 사용합니다.
사용자 Gerg 감사합니다.
저도 같은 문제가 있어요.나는 엑셀 파일로 은행 결제를 위한 특정 .txt 파일을 만들어야 합니다.표준에서는 각 필수 필드 뒤에 특정 개수의 쉼표가 필요하므로 .txt 파일을 문자로 구분해서는 안 됩니다.가장 쉬운 방법은 엑셀 파일의 내용을 복사하여 메모장에 붙여 넣는 것입니다.
Write #1 "Print my Line"을 사용하는 대신 Print #1 "Print my Line"을 사용했는데 기본 Quote() 없이 모든 데이터가 제공됩니다.
Dim strFile_Path As String
strFile_Path = ThisWorkbook.Path & "\" & "XXXX" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm") & ".txt"
Open strFile_Path For Output As #1
Dim selectedFeature As String
For counter = 7 To maxNumberOfColumn
selectedFeature = "X"
Print #1, selectedFeature
'Write #1, selectedFeature
Next counter
Close #1
PRN 솔루션은 셀의 간단한 데이터에만 작동하며, 저의 경우 200자 셀에서 처음 6개의 부호만 잘라냅니다.
다음은 Excel 2007-2016의 주요 파일 형식입니다. 참고:Mac용 Excel에서 값은 +1입니다.
51 = xlOpenXMLWorkbook (without macro's in 2007-2016, xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2016, xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007-2016 with or without macro's, xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007-2016, xls)
SaveAs 메서드에 대한 다른 FileFormatNumbers:
FileExtStr = ".csv": FileFormatNum = 6
FileExtStr = ".txt": FileFormatNum = -4158
FileExtStr = ".prn": FileFormatNum = 36
언급URL : https://stackoverflow.com/questions/11501531/saving-a-excel-file-into-txt-format-without-quotes
'programing' 카테고리의 다른 글
결과 세트를 닫은 후 Oracle이 커서를 제거하지 않음 (0) | 2023.07.09 |
---|---|
앱이 실행될 때 Firebase에서 상태 업데이트를 기록하지 않도록 하는 방법 (0) | 2023.07.09 |
각도 6 관측 가능 항목에 항목 추가 (0) | 2023.07.09 |
새로운 Firebase 클라우드 메시징 시스템이 포함된 알림 아이콘 (0) | 2023.07.09 |
"git branch"와 "git checkout -b"의 차이점은 무엇입니까? (0) | 2023.07.09 |