텍스트 파일을 Excel 시트로 가져오는 중
선택한 엑셀 시트의 데이터를 삭제하고 텍스트 파일 선택을 위한 대화 상자를 열어 데이터를 삭제한 시트와 동일한 시트로 데이터를 Import하는 VBA 코드를 쓰고 있습니다.지금까지 텍스트 파일을 새 워크북에만 열 수 있고 데이터를 삭제한 시트에 열 수 없습니다.
지금까지 가지고 온 것은 다음과 같습니다. 도와주시면 감사하겠습니다.
Dim Filt As String
Dim FilterIndex As Integer
Dim Title As String
Dim FileName As Variant
Filt = "Cst Files (*.prn),*.prn"
Title = "Select a cst File to Import"
FileName = Application.GetOpenFilename(FileFilter:=Filt, Title:=Title)
If FileName = False Then
MsgBox "No File Was Selected"
Exit Sub
End If
With Application.ActiveSheet
Cells.Select
Selection.QueryTable.Delete
Selection.ClearContents
End With
Workbooks.Open FileName
텍스트 파일을 현재 시트로 가져올 수 있는 방법은 여러 가지가 있습니다.다음은 3가지(상기 사용 방법을 포함)입니다.
- QueryTable 사용방법
- 메모리에서 텍스트 파일을 연 다음 현재 시트에 쓰고 필요한 경우 마지막으로 Text To Columns를 적용합니다.
- 현재 사용 중인 방법을 사용하려면 새 워크북에서 텍스트 파일을 연 후 다음을 사용하여 현재 시트에 복사하기만 하면 됩니다.
Cells.Copy
QueryTable 사용방법
여기 제가 기록한 간단한 매크로가 있습니다.당신의 필요에 맞게 수정해 주세요.
Sub Sample()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Sample.txt", Destination:=Range("$A$1") _
)
.Name = "Sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
메모리에서 텍스트 파일을 엽니다.
Sub Sample()
Dim MyData As String, strData() As String
Open "C:\Sample.txt" For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
End Sub
배열에 데이터가 있으면 현재 시트로 내보낼 수 있습니다.
이미 사용 중인 방법 사용
Sub Sample()
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets("Sheet1") '<~~ Sheet where you want to import
Set wbO = Workbooks.Open("C:\Sample.txt")
wbO.Sheets(1).Cells.Copy wsI.Cells
wbO.Close SaveChanges:=False
End Sub
따르다
를 사용할 수 있습니다.Application.GetOpenFilename관련 파일을 선택합니다.예를 들면...
Sub Sample()
Dim Ret
Ret = Application.GetOpenFilename("Prn Files (*.prn), *.prn")
If Ret <> False Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Ret, Destination:=Range("$A$1"))
'~~> Rest of the code
End With
End If
End Sub
라고 쓸 수 있습니다.워크북 접속다음 후 삭제합니다.백그라운드 쿼리 새로 고침:=False 텍스트 파일 외부 연결이 삭제됩니다.
여기서의 제 질문에 대한 답변은 여러분이 하고자 하는 일에 대한 가장 간단한 해결책이라고 생각합니다.
파일에서 텍스트의 첫 번째 행이 있어야 할 셀을 선택합니다.
를 사용합니다.
Data/Get External Data/From File대화 상자에서 가져올 텍스트 파일을 선택합니다.가져온 텍스트의 형식을 필요에 따라 지정합니다.
에서
Import Data대화상자가 열립니다.Properties...체크 마크를 떼다
Prompt for file name on refresh박스를 클릭합니다.외부 파일이 변경될 때마다
Data/Get External Data/Refresh All버튼을 클릭합니다.
주의: 이 경우 스텝5를 건너뛰는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/11267459/importing-text-file-into-excel-sheet
'programing' 카테고리의 다른 글
| WPF DataGrid에서 붙여넣기 데이터를 복사할 때 OpenClipboard가 실패했습니다. (0) | 2023.04.17 |
|---|---|
| Swift에서 ViewController를 해제하는 방법 (0) | 2023.04.17 |
| C# EPplus OpenXML의 행 수 (0) | 2023.04.17 |
| Excel 워크북의 모든 워크시트를 data.frames와 함께 R 목록으로 읽습니다. (0) | 2023.04.17 |
| Bash 변수 할당에서 명령을 찾을 수 없음 오류 (0) | 2023.04.17 |