홈 › 활용 사례 › 복사·붙여넣기만으로 되는 일, 안 되는 일
복사·붙여넣기만으로
되는 일, 안 되는 일
매크로를 처음 쓸 때 가장 많이 하는 생각이 "복사해서 붙여넣기만 반복하면 되지 않나" 입니다. 절반은 맞습니다. 넣는 쪽은 붙여넣기가 가장 빠르고 안전합니다. 그런데 읽어 오는 쪽은 사정이 다릅니다. okmacro 는 붙여넣은 글자가 무엇이었는지 알지 못합니다. 그 경계를 먼저 정리합니다.
한글은 왜 붙여넣기로 넣는가
글자를 한 글자씩 보내는 방식은 운영체제의 입력기(IME) 를 거칩니다. 한글은 자음과 모음이 모여 한 글자가 되므로, 입력기가 조합하는 도중에 다음 글자가 들어오면 엉뚱하게 합쳐지거나 빠집니다. 영문에서는 멀쩡하던 매크로가 한글 칸에서만 깨지는 이유가 이것입니다.
문자열 동작의 클립보드 붙여넣기 를 켜면 글자를 하나씩 보내지 않고
한 덩어리로 넣습니다. 입력기를 타지 않으므로 깨지지 않고, 길수록 더 빠릅니다.
영문·숫자만 들어가는 칸은 어느 쪽이든 됩니다. 한글이 섞이거나 문장이 길면 붙여넣기 로 두는 편이 안전합니다.
문자열 동작과 Ctrl+V 의 차이
붙여넣는 방법은 두 가지로 보입니다. 쓰임새가 다릅니다.
| 방법 | 무엇을 넣는가 | 언제 씁니다 |
|---|---|---|
문자열 동작 + 클립보드 붙여넣기 |
매크로에 적어 둔 글자, 또는 표 반복의 {머리글} 값 |
넣을 내용을 미리 알고 있을 때 |
키보드 동작으로 Ctrl+V |
지금 클립보드에 들어 있는 것 — 사람이 직전에 복사한 것 | 사람이 복사해 둔 것을 여러 곳에 뿌릴 때 |
키보드 동작으로 조합키를 만들 때는 세 줄로 나눠 넣습니다.
Ctrl 누르기 → V 누르고 떼기 → Ctrl 떼기 입니다.
Ctrl+C 도 같은 모양입니다.
즉 Ctrl+C 를 매크로로 보내는 것 자체는 됩니다. 화면의 값이 클립보드에 들어가기도 합니다. 문제는 그다음입니다.
안 되는 일 — 값을 읽어 와서 판단하기
이런 일을 떠올리기 쉽습니다. "재고 칸을 복사해서, 0 이면 발주 화면을 열어라." 이것은 okmacro 로 되지 않습니다.
이유는 간단합니다. okmacro 가 할 수 있는 것은 키와 클릭을 보내는 일과 화면을 보고 기다리거나 판단하는 일입니다. 클립보드에 들어온 글자를 꺼내 매크로 안에서 쓰는 기능은 없습니다. 복사는 됐지만 그 내용은 매크로에게 보이지 않습니다.
조건 판단에 쓸 수 있는 것은 세 가지로 정해져 있습니다 — 만약 ~이면 동작의
화면 색 · 창 존재 · 이미지 입니다. 글자를 읽어 비교하는 조건은 없습니다.
정리하면 이렇습니다. 정해진 값을 넣는 일은 전부 됩니다. 화면에 적힌 글자를 읽어 와 그에 따라 달라지는 일은 되지 않습니다. 글자 대신 눈에 보이는 차이(색이 바뀐다, 창이 뜬다, 그림이 보인다)로 바꿔 말할 수 있으면 그때는 됩니다.
그래서 이렇게 돌립니다
값은 미리 표로 만들어 둡니다
화면에서 읽어 오는 대신, 넣을 값을 엑셀이나 CSV 로 먼저 모아 둡니다.
표 반복 에 엑셀에서 복사해 붙여넣거나 CSV 파일을 고르면,
행마다 블록을 한 바퀴씩 돌면서 {거래처} 자리에 그 행 값을 꽂습니다.
엑셀 파일(xlsx)을 직접 열어 읽지는 않습니다. 엑셀에서 범위를 복사해 붙여넣거나, CSV 로 저장해 고르는 두 가지 방법을 씁니다.
판단은 색과 그림으로 바꿔 말합니다
"재고가 0 이면" 은 못 쓰지만, "품절 표시가 빨갛게 뜨면" 은 쓸 수 있습니다.
만약 ~이면 에 그 좌표의 색을 주고, 조건 안에 할 일을 넣습니다.
조건이 아닐 때 할 일은 블록 안의 아니면(else) 에 넣습니다.
기다리는 것도 색으로 합니다
붙여넣은 뒤 저장이 끝났는지 알고 싶을 때, 고정 지연 대신 색 대기 를 씁니다.
입력칸이 비워져 흰색이 되는 자리를 잡아 두면 준비되는 즉시 다음으로 넘어갑니다.
주의할 점
클립보드는 하나뿐입니다. 매크로가 붙여넣기를 쓰는 동안 사람이 다른 것을 복사하면 그쪽이 들어갑니다. 돌리는 중에는 그 PC 에서 복사·붙여넣기를 하지 않는 편이 안전합니다.
붙여넣기를 막아 둔 칸이 있습니다. 비밀번호 칸이나 일부 금융 화면은
붙여넣기 자체를 거부합니다. 이때는 문자열을 한 글자씩 보내는 쪽으로 바꾸고,
설정 > 실행 의 글자 사이 간격 을 20~40ms 로 올립니다.
맞는지 확인할 때는 모의 실행을 켭니다. 실제 입력을 보내지 않고 로그만 남기므로, 어떤 값이 어느 순서로 들어갈 예정이었는지 클립보드를 건드리지 않고 볼 수 있습니다.
붙여넣었는데 칸이 비어 있다면 대개 포커스가 그 칸에 없던 것입니다.
창을 클릭해 앞으로 가져오지 말고 창 활성화 동작을 쓰고,
칸을 누른 뒤 색 대기를 한 번 넣어 화면이 준비될 시간을 줍니다.