열려있는 모든 통합문서 이름을 리스트박스에 추가하고 리스트박스에 클릭하면 이름을 리턴하는 코드
1. 먼저 유저폼을 하나 추가
2. 리스트박스 추가
3. 모듈에 아래 코드를 붙여넣기
4. GetSelectedFileName는 리스트박스의 클릭 이벤트에 붙여넣기
실행하면 아래와 같이 표시됨
* 유저폼과 리스트박스 이름은 바꾸지 않고 그냥 둔다.
아래 코드에서 콜렉션에 넣지 않고 바로 리스트박스에 넣을 수 있지만 콜렉션 사용에 익숙해지기 위해 줄이지 않음
For Each wb In Workbooks
fileList.Add wb.Name
Next wb
' ListBox1에 파일 리스트 출력
For i = 1 To fileList.Count
UserForm1.ListBox1.AddItem fileList.Item(i)
Next i
Option Explicit
' 파일 선택 시 실행할 함수
Function GetSelectedFileName() As String
Dim fileName As String
fileName = UserForm1.ListBox1.Value
GetSelectedFileName = fileName
End Function
' 통합문서 열릴 때 실행할 서브루틴
Private Sub Workbook_Open()
Dim frm As Object ' 동적 폼
Dim lstBox As Object ' ListBox 컨트롤
Dim wb As Workbook
Dim fileList As New Collection
Dim i As Integer
Set frm = UserForm1
With frm
.Caption = "폼"
.Width = 300
.Height = 200
End With
' ListBox 컨트롤
With UserForm1.ListBox1
.Left = 10
.Top = 10
.Width = 280
.Height = 150
End With
' 열려있는 모든 통합문서의 이름을 컬렉션에 추가
For Each wb In Workbooks
fileList.Add wb.Name
Next wb
' ListBox1에 파일 리스트 출력
For i = 1 To fileList.Count
UserForm1.ListBox1.AddItem fileList.Item(i)
Next i
' 폼 보여주기
frm.Show
End Sub
'엑셀 > vba' 카테고리의 다른 글
하위 폴더 포함하여 파일 이름 랜덤 변경 (0) | 2023.11.09 |
---|---|
상대계좌별로 출금 입금 집계하기 with chatgpt (0) | 2023.07.05 |
통합문서의 각 시트 값 복사하기 (0) | 2023.06.13 |
셀 값이 배열에 있는지 비교 chatgpt (0) | 2023.04.10 |
잔액 구하기 chatgpt (0) | 2023.04.06 |