VBA
-
VBA/파워포인트/사진정리 - 3. 기타 유틸리티코딩/vba 2024. 1. 13. 18:33
사진 정리 코드 작성을 위한 간단한 세 개의 유틸리티를 만들었다. 2024.01.10 - [코딩/vba] - VBA/파워포인트/사진정리 - 0. 개요 VBA/파워포인트/사진정리 - 0. 개요 맥에서 키노트로 열심히 사진을 정리하던 중, 왜 내가 이 노가다를 하고 있나 하는 자괴감이 생겨 파워포인트에서 자동정렬하는 VBA 코드를 만들었다. 키노트에서는 자동화를 할 수 있는 방법이 summertrees.tistory.com 사진 크기 확인 사진 크기를 픽셀 단위로 확인하기 위한 코드. 파워포인트에서 사진을 선택하고 실행한다. 선택된 개체가 사진이면 사이즈를 출력한다. Sub GetPictureSize() Dim selectedShape As Shape ' 현재 선택된 슬라이드에서 선택된 모양(Shape) 가..
-
VBA/파워포인트/사진정리 - 2.2.1. 사진 수 계산 함수코딩/vba 2024. 1. 13. 13:49
이 함수는 슬라이드에 있는 도형들 중에서 사진인 도형을 찾아서 해당 수를 반환하는 간단한 역할을 한다. 인수로 슬라이드에 있는 도형들(slideShapes)을 받는다. numberOfPics = 0: 초기에 사진의 수를 0으로 설정합니다. For Each shp In slideShapes ... Next shp: 슬라이드에 있는 각 도형에 대해 반복. If shp.Type = msoPicture Then: 현재 도형이 사진인 경우를 확인. msoPicture는 PowerPoint에서 사진을 나타내는 상수. numberOfPics = numberOfPics + 1: 사진인 도형을 발견하면 numberOfPics를 증가시킨다. GetNumberOfPictures = numberOfPics: 최종적으로 사진..
-
VBA/파워포인트/사진정리 - 2.2. 사진 정렬코딩/vba 2024. 1. 13. 13:45
슬라이드에 있는 사진을 정렬하는 서브루틴으로, 슬라이드에 있는 도형들(slideShapes), 도형들의 배열(shapesArray), 사진의 위치(positions), 그리고 크기(sizes)를 인자로 받는다. 인자들은 모두 참조형으로 받는다. numberOfPics = GetNumberOfPictures(slideShapes): GetNumberOfPictures 함수를 호출하여 슬라이드에 있는 사진의 수를 계산하고, numberOfPics에 저장. Select Case numberOfPics: numberOfPics의 값에 따라 다른 경우를 나누어 처리. Case 1: 사진의 수가 1개인 경우, positions(0) 및 sizes(0)에 따라 사진을 위치 및 크기를 설정. Case 2: 사진의 수가..
-
VBA/파워포인트/사진정리 - 2. 사진 정열코딩/vba 2024. 1. 13. 13:01
슬라이드에 삽입된 사진들을 정리하는 메인 프로시저다. 파일 목록 가져오기처럼 여기서 사용자 입력값을 모두 입력한다. 파일 목록의 키 디멘전과 총 디멘전 수를 정한다. 그리고 사진을 배치할 픽셀 위치와 사진 크기를 슬라이드 당 사진 수에 따라 미리 정한다. 루프 종료 조건을 주기 위해 슬라이드 수를 세어 변수에 저장한다. 프로세스를 시작할 지점을 알기 위해 현재 화면 상 슬라이드 번호를 확인한다. 그런 다음, 현재 슬라이드부터 마지막 슬라이드까지 아래의 절차를 반복한다. Do While slideIdx < slideCount + 1: 슬라이드 인덱스가 slideCount보다 작은 동안 루프를 실행. slideCount는 총 슬라이드 수. Debug.Print "Working: Slide " & slideI..
-
VBA/파워포인트/사진정리 - 1.2. 사진 삽입 서브 프로시저코딩/vba 2024. 1. 13. 00:21
폴더의 사진 파일을 슬라이드로 옮기는 프로시저다. 인수로 파일들, 배치 위치와 사진 폭을 받는다. 파일명과 배치 위치는 배열이기 때문에 참조로 전달받고 사진 폭은 값으로 전달 받는다. 처리할 방법은 아래와 같다. 처리할 파일의 수를 계산한다. 현재 슬라이드 번호를 변수에 저장한다. 반복되는 호출을 위해 현재 파워포인트를 객체화하고 새로 만드는 슬라이드를 위해 현재 레이아웃도 저장한다. 다음의 내용으로 Do..While문으로 사진 목록을 순환한다. 슬라이드를 추가하는 이유는 현재의 사진 ZOrder를 변경하면 사진의 인덱스가 바뀌기 때문에 전체 사진을 순환할 수 없어 새 슬라이드에 사진을 하나씩 복사하여 내보내며 ZOrder를 정리하기 위함이다. 이 순환은 i=0으로부터 시작하지만 순환할 때마다 i=i+3..
-
VBA/파워포인트/사진정리 - 1.1.1. 배열 정렬코딩/vba 2024. 1. 12. 15:54
배열 정렬용 유틸리티 SortArray() 이 유틸리티는 배열을 인수로 받아 버블정렬방식으로 정렬한 후 배열을 다시 반환하는 유틸리티다. 처음에 사진삽입만 처리할 때는 1차원 배열만 사용하므로 코드가 간단했는데 사진정렬을 하면서 다차원배열을 사용하는 바람에 코드가 복잡해져 버렸다. VBA/버블정렬(Bubble sort) VBA/버블정렬(Bubble sort) VB에는 Array.Sort()라는 함수가 있어 배열정렬이 가능하지만 VBA에서는 정렬함수가 따로 없다. 그래서 배열을 정렬할 함수를 별도로 만들어 써야 하는데, 그 중 많이 쓰이는 것이 코드가 간단한 버 summertrees.tistory.com 다차원 배열 정렬용 코드 인수로는 배열, 정렬용 차원의 번호, 차원 수를 입력받는다. 정렬용 차원을 기..
-
VBA/파워포인트/사진정리 - 1.1. 파일명 배열코딩/vba 2024. 1. 12. 15:26
파일명 배열 생성용 유틸리티 GetFiles() GetFiles()는 파일 이름들을 수집하고 정렬해서 배열을 반환한다. 이 프로시저는 이 프로젝트 외 다른 용도로도 사용가능하므로 유틸리티다. 실수로 경로명에 "\"를 누락해도 상관없도록 경로명을 처리한다. 폴더를 검색하고 디렉토리가 아닌 파일명만 배열에 저장한다. 이 때 경로명과 파일명을 합쳐 저장한다. 그리고 프로시저가 정상 작동하는지를 확인할 수 있도록 파일명을 '직접 실행'창에 출력한다. 그 후 VBA에는 배열을 정렬하는 함수가 없으므로 GetFiles()는 다시 서브 프로시저를 사용해서 배열을 정렬하고 최종적으로 배열을 반환한다. Function GetFiles(ByVal folderPath As String, ByVal fileExtension ..
-
VBA/파워포인트/사진정리 - 1. 사진 삽입코딩/vba 2024. 1. 12. 14:56
메인 프로시저 Main_InsertPictures(): 사진 삽입 메인은 두 개의 서브 프로시저를 사용한다. 하나는 폴더의 파일이름의 배열을 만들고 또 다른 하나는 사진을 삽입한다. 사용자가 입력해야 하는 입력값은 모두 메인에서만 처리한다. 사전 입력이 필요한 항목은 폴더 경로, 확장자, 슬라이드에 사진을 배치할 위치다. Sub Main_InsertPictures() ' 사진 삽입 메인 프로시저 ' 데이터 Dim path As String, extension As String Dim positions() As Variant path = "Z:\Life\Upload\" extension = "*.*" positions = Array(Array(0, 0), Array(480, 0), Array(480, 27..