Q18. 텍스트 파일을 만드는 방법?

4159 단어 VBAExcelExcelVBA
VBA에서는 텍스트 파일을 만들 수 있습니다.
이번에는 날짜 .txt라는 일차에서 사용할 수있는 파일을 여러 일 문 출력하는 매크로
만들어 갑시다.

예를 들어, 오늘이 20200126이라면 3주 동안 20200215까지 파일을 만듭니다.
20200126.txt ~ 20200215.txt라는 파일입니다.

■ 포인트



파일을 만들려면,
Open 파일 이름 (전체 경로) For Output As # 번호 또는 Open 파일 이름 (전체 경로) For Append As # 번호
합니다. 번호는 1부터 지정하십시오.
이것은, 파일을 작성하는 것보다는, 대상의 파일을 열기(선택한다)라고 하는 의미가 됩니다만, 대상의 파일이 존재하지 않는 경우는, 신규로 작성됩니다.

이번에는 이것을 이용하여 파일을 작성합니다.

Output과 Append의 차이는 기존 파일이 있는 경우의 동작이 다릅니다.
Output의 경우는 새로운 파일로 덧쓰기되어 버립니다.
Append의 경우 추가로 쓸 수 있습니다.

예를 들어 매크로를 사용하여 날짜 파일을 생성했습니다.
날짜 파일에 내용을 썼습니다.
또한 마찬가지로 매크로를 움직였습니다.

이 때, Output에서 작성한 경우는, 동명 파일이 있었을 경우,
덮어 쓰여지기 때문에 원래 파일의 내용이 있으면 소실됩니다.
append로 작성했을 경우는, 추기되기 때문에, 원의 파일의 내용은 남겨진 채가 됩니다.

그래서 이번에는 appennd를 이용하는 것이 좋을 것입니다.

■답변


Sub Q18_Answer()
    Dim buf As String, cnt As Long, Path As String, i As Integer
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            Path = .SelectedItems(1)
        End If
    End With
    For i = 0 To 20
        Open Path & "\" & Format(Date + i, "yyyymmdd") & ".txt" For Append As #1
        Close #1
    Next i
End Sub

■해설



이번에는, 출력처를 다이얼로그로부터 지정할 수 있도록 했습니다.
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
Path = .SelectedItems(1)
End If
End With

이 설명에서 폴더를 선택하고 선택한 폴더의 경로를 변수 Path에 저장할 수 있습니다.

그런 다음 For 루프에서 텍스트 파일을 만드는 프로세스를 여러 번 실행하면됩니다.
구체적으로는, 이하의 기술로 파일을 작성하고 있습니다.
Open Path & "\"& Format(Date + i, "yyyymmdd") & ".txt"For Append As #1

실행 결과는 다음과 같습니다.



실행하면 폴더 선택 대화 상자가 출력되므로 이번에는 바탕 화면 아래에 만든 새 폴더를 선택합니다.

OK 버튼을 누르면 다음과 같이 무사 파일이 생성되었습니다.



그러나 폴더 선택 대화 상자에서 취소를 선택하면 경로가 없으므로,
오류가 발생합니다. 거기에는 별도의 에러 처리를 기술하는 등, 대처가 필요합니다.

좋은 웹페이지 즐겨찾기