엑셀
엑셀(EXCEL) VBA에서 동일한 양식에서 한 셀의 내용만 바꿔가면서 인쇄하기(한 글자만 변경해 가면서 인쇄하기, 예제 파일 포함)
toast-story
2024. 9. 25. 22:33
728x90
이제 얼마 안되서 문자를 사용하지 않는 시대가 올 것도 같습니다.
여전히 여러가지 상황에서 인쇄물은 필요한 것이고 격식을 가져야 하는 곳에서는 더욱 그렇습니다.
간략한 문서에 이름만 변경해서 출력하는 경우가 특히 그렇습니다.
이미 워드나 한글에서는 이 기능이 구현되어 있습니다.
하지만 오늘은 엑셀을 사용해보려고 했더니 딱히 쓸만한 기능이 안보이더군요.
그래서 VBA로 짜보려고 합니다.
< 소스코드 >
Sub Change_Value_Print()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng As Range
Dim cell As Range
Dim i As Integer
FileNm = ThisWorkbook.Name '파일이름을 입력합니다.
'워크시트 설정하기
Set ws1 = Workbooks(FileNm).Sheets("Sheet1")
Change_Value = ws1.Range("E4")
Print_Sheet = ws1.Range("E5")
Value_cell = ws1.Range("E6")
Print_Range = ws1.Range("E7")
Set ws2 = Workbooks(FileNm).Sheets(Print_Sheet)
Set rng = ws1.Range(Change_Value)
' Sheet1의 지정한 범위를 반복합니다.
For Each cell In rng
'변경할 값을 입력하기
ws2.Range(Value_cell).Value = cell.Value
'입력한 출력범위 만큼만 출력하기
ws2.Range(Print_Range).PrintOut
'대기시간을 1초 추가하겠습니다.
Application.Wait (Now + TimeValue("00:00:01")) ' 1초 대기
Next cell
End Sub
소스코드 내에 있는 주석으로 설명은 충분하다고 생각됩니다.
코드를 사용하기 위해 Sheet1에는 아래와 같은 내용이 있습니다.
< 소스 사용하기 >
① 값을 입력할 범위, 출력할 시트 이름, 변경할 셀과 프린트할 범위를 입력합니다.
② 변경할 값을 입력합니다.
아래에서는 B14부터 아래로 B17까지 입력했습니다.
더 길게 적어도 되게 범위는 직접 적어두게 했습니다.
③ 시작 버튼을 누릅니다.
기본 프린터와 프린터 설정된 내용을 따릅니다.
테스트할 때 Print가 없이 Microsoft Print to PDF를 사용해도 정상 동작하더라고요.
대부분 환경에서 문제 없을 것이라고 생각됩니다.
설명으로는 잘 이해가 안될 수도 있습니다.
아래 파일을 공유하겠습니다.
한, 두번 직접 입력해보시면 충분할 것이라 판단됩니다.
반응형