çŽããªããã°"ã«åãåã£ã話 â VBAã®ããŠã¹ããã¯åå ¥åé¡
ååãå°ä»»ã®ITæ
åœãããªãç°å¢ã§ã3人ã§äœ¿ãåšåº«ç®¡çã·ã¹ãã ãExcel VBAã§å
補ããçµç·¯ãæžããŸããã
ä»åã¯ãã®äžã§äžçªæããã£ããåå äžæã®ã¯ã©ãã·ã¥ã«ã€ããŠè©³ããæžããŸãã
VBAã§ã·ã¹ãã ãäœã£ãããšãããæ¹ãªããäžåºŠã¯çµéšããããããããŸããã
ãç¹å®ã®æäœããããšãã ããäœã®åè§ŠãããªãExcelãèœã¡ãããšããçŸè±¡ã§ãã
ä»ååãåã£ãã®ã¯ããŸãã«ãã®ã¿ã€ãã®äžå
·åã§ãããçµè«ããèšããšãåå ã¯èªåèªèº«ãä»èŸŒãã§ãããããäŸ¿å©æ©èœã®äžã«é ããŠããŸããã
ååæžããéãããã®ã·ã¹ãã ã¯ãŸã å°å
¥ãããã°ããã§ãåå2人ã«ãšã£ãŠã¯ã䜿ãæ
£ããŠããªãæ°ããããŒã«ãã§ããã
ããã§é »ç¹ã«ã¯ã©ãã·ã¥ãèµ·ãããšãããã£ã±ãåã®Excelãã¡ã€ã«ã®ãŸãŸã®æ¹ãå®å¿ã ã£ãã®ã§ã¯ããšãã空æ°ãçãŸããããŸããã
åå ãçªãæ¢ããŠçŽãããšã¯ãæ©èœã®åé¡ã§ãããšåæã«ãã·ã¹ãã ãžã®ä¿¡é Œãä¿ãŠããã©ããã®åé¡ã§ããããŸããã
äœãèµ·ããŠããã
倧éã®ããŒã¿ãäžæ¬ã§åŠçããæ©èœã䜿ã£ãŠãããšãã«éã£ãŠãExcelãçªç¶ãMicrosoft Excel ã¯åäœã忢ããŸããããšããç»é¢ãšãšãã«èœã¡ãããšããäžå ·åãèµ·ããŠããŸããã
åä»ã ã£ãã®ã¯ãæ¯ååãæäœã§å¿
ãåçŸããããã§ã¯ãªãã£ãããšã§ãã
ããæ¥ã¯åé¡ãªãåŠçãçµããã®ã«ãå¥ã®æ¥ã¯åããã¿ã³ãæŒããã ãã§èœã¡ãã
ããŒã¿éãå€ããšãã«èµ·ããããããšããåŸåã¯ãã£ããæããŠããŸããããããã ãã§ã¯èª¬æãã€ããªãå Žé¢ãå€ããåå ã®èŠåœããŸã£ããã€ããŸããã§ããã
3人ã䜿ã£ãŠãã端æ«ã®ã¹ããã¯ããã©ãã©ã ãšãã話ã¯ååæžããŸããããä»åã®ã¯ã©ãã·ã¥ããã®åœ±é¿ã§ã¯ãªãããšæåã¯çããŸããã
ç¹ã«å€ã端æ«ã§çºçé »åºŠãé«ãããã«èŠããç¬éããã£ãããã§ãã
ã§ãããçµè«ããèšããšãããã¯å€§ããªåéãã§ããã
åå ç©¶æã®éçš
æåã«çã£ãã®ã¯ãåçŽã«ããŒã¿éãå€ãããŠåŠçãéããªããã¡ã¢ãªäžè¶³ã§èœã¡ãŠããã®ã§ã¯ãªããããšããããšã§ããã
åŠçãåå²ããŠã¿ããã倿°ã®åãèŠçŽããŠã¿ããããŸããããçç¶ã¯å€ãããŸããã
次ã«çã£ãã®ã¯ãExcelãã¡ã€ã«èªäœã®ç Žæã§ããã
ãã¡ã€ã«ãäœãçŽããŠã¿ãããäžèŠãªæžåŒèšå®ãæ¶ããŠã¿ãããããŸããããããã广ã¯ãããŸããã§ããã
ãã®æ¬¡ã«çã£ãã®ã¯ãåPCã«å
¥ã£ãŠãããŠã€ã«ã¹å¯Ÿçãœãããšã®çžæ§ã§ããã
ããã¯ã°ã©ãŠã³ãã§åããŠããåžžé§ãœããããVBAã®åŠçã«äœãå¹²æžããŠããã®ã§ã¯ãªãããšèããäžæçã«ç£èŠãæ¢ããŠè©ŠããããšããããŸãã
ã§ããããããçç¶ã®æ¹åã«ã¯ã€ãªãããŸããã§ããã
æ¯ãè¿ããšãåå ãšã¯ç¡é¢ä¿ãªãšãããããã¶ãé åãããŠããããšã«ãªããŸãã
Windowsã®ã€ãã³ããã¥ãŒã¢ãŒã§ãšã©ãŒãã°ã確èªããããšããããŸããã
ã¯ã©ãã·ã¥ã®ã¿ã€ãã³ã°ãšäžèŽãããšã©ãŒã¯èšé²ãããŠãããã®ã®ã
ããã«æžãããŠããã®ã¯Excelæ¬äœãç°åžžçµäºããããšããçµæã ãã§ã
ãªãç°åžžçµäºããã®ããšããåå ãŸã§ã¯èªã¿åããŸããã§ããã
åå ãçµã蟌ãããã«ãåŠçã®äž»èŠãªã¹ãããããšã«ãã°ãæžãåºãããã«ãããŸããã
ãã©ããŸã§å®è¡ãããŠãã©ãã§æ¢ãŸã£ããããèšé²ã«æ®ãã°ã
次ã«ã¯ã©ãã·ã¥ãããšãã«æããããåŸããããšèããããã§ãã
ã§ããããã°ãèŠè¿ããŠããã¯ã©ãã·ã¥ããçŽåã®åŠçå
容ã¯ãã€ããã©ãã©ã§ãå
±éç¹ãèŠã€ãããŸããã§ããã
æ£çŽããã®æç¹ã§ãExcelãããããã ãã§ãçŽãããããªãã®ã§ã¯ããšååãããããããŠããŸããã
ãã ãã¯ã©ãã·ã¥ããã¿ã€ãã³ã°ããã芳å¯ããŠãããšããããã¿ãŒã³ã«æ°ã¥ããŸããã
åŠçäžã«ããŠã¹ãåããããããã€ãŒã«ãåããããããšãã«ãã¯ã©ãã·ã¥ãã確çãäžãã£ãŠããããã«èŠããã®ã§ãã
åŠçå
容ã§ã¯ãªããæäœã®ã¿ã€ãã³ã°ã«ç®ãåããã®ã¯ããã®ãšããåããŠã§ããã
åå :ããŠã¹ããã¯ã®åå ¥åé¡
ãã®æ°ã¥ãããã£ããã«èª¿ã¹ãŠãããšãã·ã¹ãã ã®äžã«ä»èŸŒãã§ãããããŠã¹ããã¯ãã®ä»çµã¿ãåå ã ãšããããŸããã
ããšããšãã®ã·ã¹ãã ã§ã¯ãæšæºã®ãªã¹ãããã¯ã¹ãããŠã¹ãã€ãŒã«ã§ã®ã¹ã¯ããŒã«ã«å¯Ÿå¿ããŠããªããšããåé¡ããããŸããã
ããã解決ããããã«ãWindowsã®APIã䜿ã£ãŠããŠã¹ã®åããç£èŠãããWH_MOUSE_LLããšããããã¯ãä»èŸŒãã§ããã®ã§ãã
ããŠã¹ãã€ãŒã«ãåãããããšãæ€ç¥ããŠããªã¹ãããã¯ã¹ã®è¡šç€ºãã¹ã¯ããŒã«ãããããšããä»çµã¿ã§ãã
çŸå Žããã®ãããŠã¹ãã€ãŒã«ã§ã¹ã¯ããŒã«ãããããšããå°ããªèŠæã«å¿ããããã«å
¥ããæ©èœã§ããã
åé¡ã¯ããã®ããã¯ãããã€ã§ãå²ã蟌ãã§ãããä»çµã¿ã ã£ãããšã§ãã
VBAã¯åºæ¬çã«ã·ã³ã°ã«ã¹ã¬ããã§åããŠããŠã1ã€ã®åŠçãçµãããŸã§æ¬¡ã®åŠçã¯åŸ
ããããã®ãåæã«ãªã£ãŠããŸãã
ãšãããã倧éããŒã¿ãåŠçããŠããæäžã«ããŠã¹ãåãããããšããã®ããã¯ãåŠçã®éäžã«å²ã蟌ãã§ããŠããŸããŸãã
ãŸã çµãã£ãŠããªãã¯ãã®VBAã®å®è¡ç°å¢ã®äžã«ãããäžã€ã®åŠçãå
¥ã蟌ãã§ããŸãã
ãããããåå
¥ïŒãªãšã³ãã©ã³ã·ãŒïŒããšåŒã°ããç¶æ
ã§ãã
VBAã®å®è¡ç°å¢ã¯ãããããåå
¥ãæ³å®ããŠäœãããŠããŸããã
çµæãšããŠå
éšã®ç¶æ
ãççŸãèµ·ãããExcelããšåŒ·å¶çµäºããŠããŸã£ãŠããããšããã®ãå®éã«èµ·ããŠããããšã§ããã
ããŒã¿éãå€ããšãã»ã©åŠçæéãé·ããªãããã®éã«ããŠã¹ãåã確çãäžããããããããŒã¿éãå€ããšãã«èµ·ãããããããã«èŠããŠããã®ããããã§èª¬æãã€ããŸããã
ããšãããªãã
1人ã®äœæ¥è
ãäŒç¥šã1æãã€åŠçããŠããéäžã«ã
å¥ã®äººããã¡ãã£ãšãããä»ãããé¡ãããšæšªããå²ã蟌ãã§ããŠã
åãæºã®äžã§äœæ¥ããã¡ããã¡ãã«ãªã£ãŠããŸããããªã€ã¡ãŒãžã§ãã
VBAã¯ã1人ã®äœæ¥è
ãã1ã€ã®äœæ¥ãæåŸãŸã§çµãããããããšãåæã«åããŠããã®ã§ãéäžã§å²ã蟌ãŸããããšããŸã£ããæ³å®ããŠããŸããã§ããã
è§£æ±ºæ¹æ³
åå ããããã°ã察åŠèªäœã¯ã·ã³ãã«ã§ããã
éãåŠçã«å
¥ãçŽåã§ããŠã¹ããã¯ãäžæçã«è§£é€ãïŒUnhookWindowsHookExïŒã
åŠçãçµãã£ãã¿ã€ãã³ã°ã§å床ããã¯ãããçŽãïŒSetWindowsHookExïŒã
ãšãã圢ã«ããŸãããåŠçäžã¯ããŠã¹ãã€ãŒã«ã§ã®ã¹ã¯ããŒã«ãäžæçã«å¹ããªããªããŸãããã¯ã©ãã·ã¥ããããã¯ããã«ãŸãã§ãã
ãã®ä¿®æ£ãå
¥ããŠãããåãçç¶ã®ã¯ã©ãã·ã¥ã¯äžåºŠãèµ·ããŠããŸããã
ä¿®æ£åŸã¯ããããšåŠçäžã«ããŠã¹ãæ¿ããåããããããã€ãŒã«ãåãç¶ãããããªããäœåºŠãåäœç¢ºèªãè¡ããŸããã
äœé±éãåå ãããããªãã£ãäžå
·åããçŽããŠã¿ããšæ°è¡ã®ã³ãŒã远å ã§åãŸã£ãããšããæåæããããããªçµæ«ã§ããã
ãã®çµéšããåŠãã ããš
äžçªã®åŠã³ã¯ããåçŸããªãäžå
·åã»ã©ãæäœã®ã¿ã€ãã³ã°ãçãããšããããšã§ãã
ããŒã¿éãã³ãŒãã®äžèº«ã°ãããçã£ãŠããéã¯ããŸã£ããåå ã«ãã©ãçããŸããã§ããã
ãäœãããŠãããšãã«èµ·ãããããšãããæäœåŽã®æ
å ±ã«ç®ãåããŠãããäžæ°ã«ç³žå£ãèŠããŠããŸããã
ããäžã€ã¯ã䟿å©ã«ããããã®å·¥å€«ããæãã¬åœ¢ã§è¶³ãåŒã£åŒµãããšãããããšããç¹ã§ãã
ããŠã¹ãã€ãŒã«ã§ã®ã¹ã¯ããŒã«ãšãããçŸå Žã®å°ããªèŠæã«å¿ããããã«å
¥ããä»çµã¿ãããŸããã·ã¹ãã å
šäœãäžå®å®ã«ããåå ã«ãªããšã¯æã£ãŠããŸããã§ããã
æ©èœãè¶³ããšãã¯ããããä»ã®ã©ã®åŠçãšåæã«åãå¯èœæ§ãããããå°ãç«ã¡æ¢ãŸã£ãŠèããå¿
èŠãããã®ã ãšæããŠããŸãã
ãã以éã¯ãéãåŠçãæžããã³ã«ããã®åŠçäžã«ãŠãŒã¶ãŒãäœãæäœãããã©ããªããããæèããŠç¢ºèªããããã«ããŠããŸãã
å®éã«åŠçäžã«ããŠã¹ãåããããããŒããŒããè§Šã£ããããªãããã¹ãããããšããæé ãããã®äžä»¶ããå ãã£ãç¿æ
£ã§ãã
å°ä»»ã®ITæ
åœãããªãç°å¢ã§ã¯ãããããå°éãªç¢ºèªäœæ¥ãèªåèªèº«ã§ç©ã¿éããŠãããããªãã®ã ãšãæ¹ããŠæããããããåºæ¥äºã§ããã
åå ãããã£ãåŸãåå2人ã«ãããªãèœã¡ãŠããã®ãããããèµ·ããªãã®ããããå°éçšèªãã§ããã ã䜿ããã«èª¬æããŸããã
åå ãé ããã«å
±æããããšã§ãéã«ãã¡ãããšçŽããŠããã人ãããããšããå®å¿æã«ã€ãªãã£ãããã«æããŸãã
äžå
·åãã®ãã®ãããäžå
·åã«ã©ãåãåã£ãŠãããã®æ¹ãã䜿ã人ã«ãšã£ãŠã¯å€§äºãªã®ãããããŸããã
ãããªæ¹ã«èªãã§ããã ããã
VBAã§ãåçŸããªãäžå ·åãã«é ãæ©ãŸããŠããæ¹
Windows APIã䜿ã£ãããŠã¹ã»ããŒããŒãããã¯ãVBAãExcelã«çµã¿èŸŒãã§ããæ¹
ãåå äžæã®ã¯ã©ãã·ã¥ãã®åãåãæ¹ãç¥ãããæ¹
ãããã«
次åã¯ãGitHub Pagesãžã®åæ ãé ããäœæ¥ãæ¢ãŸã£ãŠããŸã£ãŠããåé¡ããéåæåŠçã§è§£æ±ºããè©±ãæžãäºå®ã§ãã
åãããã«ãåå äžæã®äžå ·åã«é ãæ©ãŸããŠããæ¹ã®åèã«å°ãã§ããªãã°å¬ããã§ãã
