vb6.0/vba [vb6.0/vba] Binary(바이너리)를 이용한 텍스트파일 읽기
페이지 정보
본문
질문내용
[내공100점] 엑셀 지정위치에 사진 넣기... 답변 내용입니다.
L3, M3, N3, O3 셀에 사진명을 넣고
B17:D17, G17:I17, B21:D21, G21:I21 셀에
사진을 알맞게
B17:D17엔 L3에 있는 사진명을 폴더에서 찾아와서 넣고,
G17:I17은 M3에 있는 사진명을 폴더에서 찾아와서 넣고,
B21:D21은 N3에 있는 사진명을 폴더에서 찾아와서 넣고,
G21:I21은 O3에 있는 사진명을 폴더에서 찾아와서 넣고 싶습니다.
페이지는 2장만만들어놨는데
최대 60장이상까지도 만들어도 사용이 가능했으면 좋겟습니다.
해설
vba 매크로 작업을 하기 위해서 우선 로직을 파악해볼 필요가 있습니다.
#. 순환문을 사용할 수 있는가? 에 대한 질문을 해봅니다.
우선 1페이지에서 2페이지...60페이지 늘어난다고 합니다. 당연 순환문으로 작업을 해야 겠지요
다음으로
#.순환문에 규칙적으로 적용이 되는가? 에 대한 질문을 해봅니다.
L~M 열까지 순차적으로 들어간다는걸 확인 할 수 있습니다.
마지막으로
#.예외처리는 간단히 적용 되는가? 에 대한 질문을 해봅니다.
만일 L3에 값이 있고 M3에 값이 없고 N3에 값이 있을때 이런 경우도 쉽게 예외 처리가 가능하며 원하는 결과를 얻어야 한다.
결론
1. L:O 열의 모든 값이 있는 셀을 순환
2. 해당 값으로 이미지가 있을 경우
3. 값이 있는 셀을 기준으로 이미지가 들어갈 셀을 패턴에 의해 찾음
4. 이미지를 삽입
답변
아래 소스가 잘리네요
첨부한 파일에 소스 있으니 참고하세요
지식인 링크도 같이 올려둡니다.
Sub program1472_com()
Dim C As Range, imgCell As Range
Dim fPath As String, fName As String
fPath = GetFolder
For Each C In Columns("L:O").SpecialCells(2)
Debug.Print C.Address
If Len(C) Then
fName = Dir(fPath & C.Value & ".*")
If Len(fName) Then
Set imgCell = Cells(C.Row + 14 + ((C.Column \ 2) - 6) * 4, 2 + (C.Column Mod 2) * 5)
ActiveSheet.Shapes.AddPicture fPath & fName, msoFalse, msoTrue, _
imgCell.Left + 2, imgCell.Top + 2, imgCell.MergeArea.Width - 4, imgCell.MergeArea.Height - 4
End If
End If
Next
End Sub
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1) & "\\"
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
- 이전글[vba] 엑셀 관리자 권한으로 실행하기 19.07.08
댓글목록
등록된 댓글이 없습니다.