1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

[레벨:30]아별

2009.07.31 02:31

첨부파일을 다운 받아, 압축을 푸시고 엑셀 파일을 여신다음..

"J5"셀의 값을 평택419, 평택422, 평택423 으로 바꿔서 선택해보세요.

엑셀 파일이 저장되어 있는 폴더 밑에 있는 images라는 폴더에 있는 해당 이미지를 가지고와서 셀 사이즈에 맞게 쏙 들어갑니다.

 

다운받기 : abyul_20090729_insertPicture.zip

 

솔직히..

이걸 해드릴까 말까 살짝 고민을 했지요.. ㅎㅎ

만드는 방법을 설명을 해드라자니 막막합니다. =_=;;

 

일단 보시지요...

 

기본적으로 엑셀의 기본 기능으로는 불가능합니다. VBA를 사용하실 수 밖에 없구요..

만약에 별도의 시트에 이미지가 모두 첨부되어 있다면.. 이름을 이용해서 동적 참조가 가능할 수도 있겠지만..

파일을 열어서 첨부하는 문제이니.. VBA로 할 수 밖에 없습니다.

 

코드에 주석을 열심히 달아놨습니다만.. 아래 코드를 이해하실 수 있을지는 잘 모르겠습니다.

생각보다 시간이 많이 걸렸구요.. 고생했습니다. 애썼다 한말씀해주세요.. ㅎㅎ

 

Option Explicit

Public pointNumber  As String


Sub insertPicture()

    '엑셀 파일이 있는 경로를 변수로 지정합니다.
    Dim basePath As String
    basePath = ActiveWorkbook.Path

    '작업할 시트들을 변수로 지정합니다.
    '그래야 나중에 시트 이름을 바꿔도 아래 2줄만 바꾸면 되게끔요..
    Dim S_ps As Worksheet
    Set S_ps = Worksheets("표석대장")
    Dim S_js As Worksheet
    Set S_js = Worksheets("조사현황")

    '삼각점번호의 값을 masterCode라는 변수에 집어 넣지요~
    Dim masterCode As String
    masterCode = S_ps.Range("J5").Value

    '사진 삽입에 필요한 변수 정의
    Dim R As Range
    Dim strFile As String

        '사진을 삽입하기 전에 기존 사진을 제거합니다.
        S_ps.Select
        If ActiveSheet.DrawingObjects.Count > 0 Then
            Call deleteObject
        End If

    '표석 대장 시트에 표지 사진 입력
    Set R = S_ps.Range("G20:AJ42")
    strFile = basePath & "\images\" & masterCode & "표지.JPG"
    Call resizePic(S_ps, R, strFile)

        '사진을 삽입하기 전에 기존 사진을 제거합니다.
        S_js.Select
        If ActiveSheet.DrawingObjects.Count > 0 Then
            Call deleteObject
        End If

    '조사현황 시트에 근경 사진 입력
    Set R = S_js.Range("A3:M3")
    strFile = basePath & "\images\" & masterCode & "근경.JPG"
    Call resizePic(S_js, R, strFile)

    '조사현황 시트에 원경 사진 입력
    Set R = S_js.Range("A5:M5")
    strFile = basePath & "\images\" & masterCode & "원경.JPG"
    Call resizePic(S_js, R, strFile)
   
    S_ps.Select
    S_ps.Range("J5").Select
   
    pointNumber = Worksheets("표석대장").Range("J5").Value

End Sub

'시트에 이미지 삽입 후에 셀 사이즈에 맞게 이미지 조정.
' resizePic( 삽입할 시트, 삽입할 셀 영역, 삽입할 파일 이름 )
Sub resizePic(S As Worksheet, R As Range, strFile As String)
    S.Select
    R.Select
   
    Dim fileName As String
    fileName = Dir(strFile)
   
    If Len(fileName) > 0 Then
        S.Pictures.Insert(strFile).Select
        With Selection
            .Top = R.Top
            .Left = R.Left
            .Height = R.Height
            .Width = R.Width
        End With
    Else
        MsgBox "화일이 없어요~", vbInformation, "이미지 삽입 에러창"
        S.Range("j5").Select
        End
    End If
End Sub


'사진을 삽입하기 전에 기존 사진을 제거합니다.
Sub deleteObject()
    ActiveSheet.DrawingObjects.Select
    Selection.Delete
End Sub

 

 

 

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)