반응형
안녕하세요.
오랫만에 포스팅 합니다.
오늘은 엑셀 VB를 활용하여
SHAPE객체의 텍스트를 셀로 추출 하는 매크로를 만들어 보려고 합니다.
활용도는 글쎄요...
혹시나 필요하신분들이 있을까 몰라 올립니다.
먼저 위와 같은 셰이프 텍스트 박스가 있다면
개발도구 -> 삽입 -> 양식컨트롤 -> 단추를 클릭하여 버튼을 추가해줍니다.
버튼의이름을 코드추출이라고 변경합니다.
개발도구를 클릭하여 VisualBasic를클 릭하여 다음과 이 코딩합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Option Explicit
Sub code_extraction()
Columns("O:P").Select ' O,P열 선택
Selection.ClearContents 'O,P열 삭제
Dim shp As Shape '각 도형을 넣을 변수
Dim varTemp '도형의 값을 Enter로 나누어 넣을 배열변수
Dim i As Long '배열 개수만큼 반복할 변수
Dim s As Long '각 배열내 숫자만큼 반복할 변수
Dim strL As String '각 배열의 각 숫자를 넣을 변수
Dim strU As String '각 숫자를 합쳐 넣을 변수
'화면 업데이트 (일시)정지
Application.ScreenUpdating = False
'현재시트의 각 도형을 순환
For Each shp In ActiveSheet.Shapes
If shp.Type = 1 Then '만약 도형의 (자동생성)도형 종류라면
Cells(Rows.Count, "o").End(3)(2) = shp.Name 'Q열에 도형의 이름을 넣음
varTemp = Split(shp.TextFrame2.TextRange.Text) 'shape의 텍스트를 한글자로 분리
For i = 0 To UBound(varTemp) '배열 개수만큼 반복
For s = 1 To Len(varTemp(i)) '각 배열의 문자길이 만큼 반복
strL = Mid(varTemp(i), s, 1) '각 문자를 변수에 넣음
strU = strU & strL '각 문자 숫자를 합쳐감
Next s
'합쳐진 문자를 줄바꿈(alt+enter)를 제거하고 S열에 뿌려줌
Cells(Rows.Count, i + 16).End(3)(2) = Replace(strU, vbLf, "")
strU = "" '재사용 위하여 초기화
Next i
End If
Next shp
End Sub
|
소스가 조금 복잡하더라도 주석이 있어 이해하기 쉬울 겁니다.
위와 같이 버튼에 우클릭하여 매크로 지정을 클릭합니다.
code_extration매크로를 코드추출 버튼에 지정합니다.
짜잔 그럼 아래와 같이 shape넘버와 텍스트를 가져와 O열과 P열에 각각 추출합니다
뭔가 간단할거 같아 시작 하였지만
엑셀 VB만들고보니 좀더 공부를 해야겠다고 생각이 들었습니다.
즐거운 하루 되세요.
'엑셀팁' 카테고리의 다른 글
여러셀의 텍스트 내용을 구분 기호로 하나로 합치기 - 엑셀 (0) | 2021.09.06 |
---|---|
시트안의 많은 인터넷주소 한방에 하이퍼링크로 자동 변환하기 (0) | 2021.08.30 |
엑셀에서 시간을 일 시간 분으로 자동 변환하기 (1) | 2021.06.24 |
엑셀(EXCEL) 양식컨트롤 체크박스 전체선택·전체해제, activex컨트롤 전체해제·전체선택 VBA 매크로 (2) | 2021.01.24 |
EXCEL(엑셀) 첫 글자 자음 모음 분리 현상 오류 제거 하기 (2) | 2021.01.10 |
엑셀 그림 클릭 확대 축소 VBA 매크로 완성형- 축소 시 셀 맞춤까지 완벽(EXCEL picture shapes, zoom, reduction,Cell alignment) (4) | 2020.04.10 |
엑셀 도형( Shapes,그림,jpg )클릭 시 사진 확대 축소VBA 매크로 2가지 (0) | 2020.03.21 |
엑셀(Excel) 삽입 된 개체(object) 클릭(Click) 시 파일 자동열기 VBA 매크로 (0) | 2020.03.16 |
엑셀 2010 네트웍상에에서 동시에 여러사람이 엑셀 문서 작업하여 저장하기 (0) | 2017.03.06 |
엑셀 숫자 포함시 추출 (0) | 2017.01.25 |