2009年7月19日日曜日

セルの中身をコピペ@Excel VBA

 エクセルのクリップボードの挙動はちょっと独特で、「値だけ」とか「書式だけ」をコピペする事が出来、大変便利なのですが、純粋なテキストデータのみをコピーしたり貼り付けたりしたい時もあります。

 僕の場合は、F2,Ctrl+Shift+Home,Ctrl+c,Escと一気に操作していたのですが、手数が多くて面倒くさいので、AutoHotKeyを使用して、上記操作をCtrl+Shift+cに割り振って作業していました。

 しかし、AutoHotKeyのようなユーティリティを自由に導入できる現場ばかりではないので、同等機能をVBAで作り直す事にします。

 以下のコードをPERSONAL.XLSの標準モジュールへ記述。


Private Sub Auto_Close()
With Application
.OnKey "^+c"
.OnKey "^+v"
End With
End Sub

Private Sub Auto_Open()
With Application
.OnKey "^+c", "CopyActiveCellValue"
.OnKey "^+v", "PasteSameValue"
End With
End Sub

Private Sub CopyActiveCellValue()
With Application
.SendKeys "{F2}"
.SendKeys "^{End}"
.SendKeys "^+{Home}"
.SendKeys "^c"
.SendKeys "{Esc}"
.StatusBar = "★アクティブセルの値をコピーしました。"
End With
End Sub

Private Sub PasteSameValue()
With Application
.SendKeys "{BS}"
.SendKeys "^v"
.SendKeys "^{Enter}"
.StatusBar = "★選択セル全てに対し、同じ値を貼り付けました。"
End With
End Sub


 マクロでも、Sendkeysを使用した操作については、アンドゥが利くのがミソ。

0 件のコメント:

コメントを投稿