728x90

이제 얼마 안되서 문자를 사용하지 않는 시대가 올 것도 같습니다.

여전히 여러가지 상황에서 인쇄물은 필요한 것이고 격식을 가져야 하는 곳에서는 더욱 그렇습니다.

간략한 문서에 이름만 변경해서 출력하는 경우가 특히 그렇습니다.

 

OOO 자리만 변경하면서 출력하는 것을 생각해 보겠습니다.

 

이미 워드나 한글에서는 이 기능이 구현되어 있습니다.

하지만 오늘은 엑셀을 사용해보려고 했더니 딱히 쓸만한 기능이 안보이더군요.

그래서 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에는 아래와 같은 내용이 있습니다.

 

< 소스 사용하기 >

 

① 값을 입력할 범위, 출력할 시트 이름, 변경할 셀과 프린트할 범위를 입력합니다.

 

Sheet1에 들어갈 내용

 

② 변경할 값을 입력합니다.

아래에서는 B14부터 아래로 B17까지 입력했습니다.

더 길게 적어도 되게 범위는 직접 적어두게 했습니다.

 

③ 시작 버튼을 누릅니다.

기본 프린터와 프린터 설정된 내용을 따릅니다.

테스트할 때 Print가 없이 Microsoft Print to PDF를 사용해도 정상 동작하더라고요.

대부분 환경에서 문제 없을 것이라고 생각됩니다.

 

PDF 프린터에서도 잘 동작합니다.

 

설명으로는 잘 이해가 안될 수도 있습니다.

아래 파일을 공유하겠습니다.

 

한, 두번 직접 입력해보시면 충분할 것이라 판단됩니다.

 

연속 인쇄하기.xlsm
0.02MB

 

 

 

반응형

+ Recent posts