2017-11-24 23 views
0

텍스트 파일을 선택한 다음 셀로 가져온 선택한 텍스트 파일의 내용을 가져올 수있는 매크로를 만들려고합니다. 나는 filedialog를 가져 와서 사용자가 파일을 선택하게했지만 그 다음 파일 가져 오기를 진행하는 방법을 알지 못합니다. 누군가가 이것을 도울 수 있습니까?선택한 텍스트 파일을 셀 A1에 가져 오려고 시도합니다.

Sub ImportFile() 
Dim dFile As FileDialog, result As Integer, it As Variant 
Set dFile = Application.FileDialog(msoFileDialogOpen) 

dFile.InitialFileName = "G:\" 


If dFile.Show = -1 Then 
    Debug.Print dFile.SelectedItems(1) 
End If 


End Sub 

가 사전에 감사합니다

내가 지금까지 가지고있는 (작업) 코드입니다!

+0

당신은에서 파일의 전체 내용을 배치 할 단세포_?? 파일이 여러 줄입니까? –

+0

어쨌든 도움말에서'Open' 문을 찾으십시오. 그런 다음 내용을 변수로 가져 와서 ('Line Input' 조회), 변수를 셀에 넣습니다. ActiveSheet.Cells (1,1) .Value = myVar' 1,1을 셀의 좌표로 바꿉니다. –

+0

그래, 일련의 줄이있는 텍스트 파일로, 구분 된 텍스트를 공백으로 구분 된 텍스트로 가져 오려고합니다. Open 진술은 무엇을 의미합니까? – Rhyfelwr

답변

0

아래 코드와 같은 것이므로 전체 .txt 파일을 가져옵니다. 파일을 2-d 배열로 복사합니다. 그 후, 당신은 행의 차원을 통해 루프해야하고, 행에서 시작하여 워크 시트에 각 행의 열을 복사 1.

코드

Option Explicit 

Sub ImportFile() 

Dim fNum As Integer 
Dim WholeFile As String 
Dim FileName As String 
Dim Arr As Variant, ArrRow As Variant 
Dim i As Long, Col As Long 

Dim dFile As FileDialog, result As Integer, it As Variant 

Set dFile = Application.FileDialog(msoFileDialogOpen) 
dFile.InitialFileName = "G:\" 

If dFile.Show = -1 Then 
    FileName = dFile.SelectedItems(1) 
End If 

fNum = FreeFile 
Open FileName For Input As fNum 
WholeFile = Input$(LOF(fNum), #fNum) 
Close fNum 

Arr = Split(WholeFile, vbCrLf) ' Break the file into lines (array) change vbCrLf to your rows delimeter 

' loop through Array rows 
For i = 0 To UBound(Arr) - 1 
    ArrRow = Split(Arr(i), ",") ' break the row to columns , change "," to your delimeter 
    Range("A" & i + 1).Resize(1, UBound(ArrRow)).Value = ArrRow 
Next i 

End Sub 
+0

스페이스가 구분 기호이면 ""또는 ""을 입력합니까? 또한 vbCrLf에서 정확한 행 수를 제공해야합니까? 잠재적 인 행의 수가 무작위이기 때문에. – Rhyfelwr

+0

@Rhyfelwr 그것이 공간이라면''''. 그리고 아니요, 행 수를 정확하게 지정할 필요가 없습니다. 동적 인 점이 좋습니다. 당신이 의도 한대로 작동하는지 알고 싶습니다 –

+0

그래, 그냥 테스트, 경이로운 작품! 도와 주셔서 감사합니다! – Rhyfelwr