관련 : https://konahn.tistory.com/entry/Export2PDF
지식인 링크: https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=467310111
특정 폴더 내의 모든 pptx 파일에 대해
내부의 모든 슬라이드를 그림(png)으로 내보내기할 수 있습니다.
VBA코드:
더보기
Option Explicit
'Const TargetFolder = "C:\Temp" '따로 결과파일을 저장할 폴더가 있을 경우
Const TargetFolder = "" 'ppt파일이 있는 폴더에 저장
Const Ext = ".png" '변환 확장자
Const Zoom = 3 '저장 비율
Sub Export2PNG()
Dim tPrs As Presentation, sPrs As Presentation, sld As Slide
Dim sPpt As String, sPNG As String
Dim sPath As String, tPath As String
Dim PR As PrintRange
Dim Cnt As Long, L As Long
Dim SW As Single, SH As Single
On Error GoTo Oops
Set tPrs = ActivePresentation
With Application.FileDialog(msoFileDialogFolderPicker)
.Filters.Clear
.AllowMultiSelect = False
.ButtonName = "현재폴더 선택"
.InitialFileName = tPrs.Path & "\"
.Title = "PNG로 내보낼 ppt파일이 들어있는 폴더 선택"
If .Show = -1 Then sPath = .SelectedItems(1)
End With
'sPath = tPrs.Path
If sPath = "" Then Exit Sub
Debug.Print ">> Source Folder: " & sPath
tPath = IIf(TargetFolder = "", sPath, TargetFolder)
Debug.Print ">> Target Folder: " & tPath
'첫번째 파일 검색
sPpt = Dir(sPath & "\*.ppt?")
'Debug.Print sPpt
While Len(sPpt) > 0
If FileExistsGA(sPath & "\" & sPpt) And _
sPath & "\" & sPpt <> tPrs.FullName Then
Set sPrs = Presentations.Open(FileName:=sPath & "\" & sPpt, ReadOnly:=msoTrue, _
Untitled:=msoFalse, WithWindow:=msoTrue)
If Not sPrs Is Nothing Then
Cnt = Cnt + 1
'ppt이름_xxx.png 으로 저장
sPNG = Left(sPrs.Name, InStrRev(sPrs.Name, ".") - 1)
'sPNG = sPNG & Ext '.PNG
Debug.Print Format(Now, "YY-MM-DD HH:NN:SS") & " (" & Format(Cnt, "0000") & _
") Converting " & sPrs.Name & " to " & sPNG & "_00x" & Ext
With sPrs.PageSetup
SW = .SlideWidth: SH = .SlideHeight
End With
'sPrs.Export tPath, Mid(Ext, 2)
For Each sld In sPrs.Slides
sld.Export tPath & "\" & sPNG & "_" & Format(sld.SlideIndex, "000") & Ext, Mid(Ext, 2), SW * Zoom, SH * Zoom
Next sld
Debug.Print Format(Now, "YY-MM-DD HH:NN:SS") & " " & sPrs.Slides.Count & " slide(s) exported."
DoEvents
sPrs.Close
End If
End If
'다음 파일 검색
sPpt = Dir()
'Debug.Print sPpt
Wend
Debug.Print Format(Now, "YY/MM/DD HH:NN:SS") & " Total " & Cnt & " file(s) processed."
Oops:
If Err.Number Then MsgBox Err.Description
End Sub
Function FileExistsGA(ByVal FileSpec As String) As Boolean
' Karl Peterson MS VB MVP
Dim Attr As Long
' Guard against bad FileSpec by ignoring errors
' retrieving its attributes.
On Error Resume Next
Attr = GetAttr(FileSpec)
If Err.Number = 0 Then
' No error, so something was found.
' If Directory attribute set, then not a file.
FileExistsGA = Not ((Attr And vbDirectory) = vbDirectory)
End If
On Error GoTo 0
End Function
유의사항:
첨부한 파일을 매크로 허용해서 열어놓고
Atl-F8로 매크로를 실행하세요.
그리고 pptx파일이 있는 폴더를 선택하면 됩니다.
실행결과:
>> Source Folder: C:\Users\사용자\Desktop\새 폴더
>> Target Folder: C:\Users\사용자\Desktop\새 폴더
24-04-02 13:36:53 (0001) Converting Sample5.pptm to Sample5_00x.png
24-04-02 13:36:53 5 slide(s) exported.
24-04-02 13:36:54 (0002) Converting Sample5Auto.pptm to x
24-04-02 13:36:55 7 slide(s) exported.
24-04-02 13:36:56 Total 2 file(s) processed.
|
현재 파일은 제외합니다.
저장 위치는 pptx파일이 있는 폴더에 저장합니다.
현재는 3인데 Zoom 값을 크게할수록 png 이미지의 크기가 커집니다.
Ext를 .jpg 로 바꾸면 jpg 파일로 저장합니다.
파일 첨부합니다:
'PPT+VBA' 카테고리의 다른 글
슬라이드 노트가 있는 슬라이드만 출력하기 (0) | 2024.05.28 |
---|---|
사진을 여러 칸(박스)로 자동으로 분할하기 (0) | 2024.05.18 |
PPT 일부 슬라이드만 블러처리된 그림 프레젠이션 만들기 (1) | 2024.04.28 |
물결무늬 선 만들기 (2) | 2024.04.05 |
편집 모드에서 자동으로 동영상 재생 (0) | 2024.03.13 |
Freeform 도형을 따라 잉크 그리기 애니메이션 자동 생성 (1) | 2024.02.25 |
100슬라이드 중 랜덤(무작위) 5슬라이드 재생 (1) | 2024.01.19 |
테이블(표) 윤곽선 따라 가이드 선 자동 추가 (1) | 2024.01.15 |
최근댓글