忍者ブログ

段落コピーと段落切り取りwordマクロを作ってみた

2023年06月18日
打合せで議論が紛糾すると、話題が点々として同じことを繰り返したりということがある。

そんな打合せの議事録を書くのに録音から文字を起こしたりすると、
話題が点々としていて、行をコピペの応酬になる。

そして何度もコピペをしてるうちにめんどくなってきた。


使っているテキストエディタでは行コピーも行切り取りもできるのに、
なんでWordではその機能がないの?

てなわけで作ることにした。
がんばって複数段落選択にも対応!



まずは検索。
カーソルのある段落をWord VBAで選択する(インストラクターのネタ帳)
https://www.relief.jp/docs/word-vba-select-paragraph.html

予想通り。1行だわ。
SelectをCopyに変えて完成?

複数段落選択すると、1段落目しかコピーされてない。
(Paragraphs(1) だとコレクションの1要素目しか指定してないもんね)


複数の段落を選択する方法は見つかったけど、
選択範囲を拡張する処理っぽいので、汎用的なものを1行ソースで書くのは無理っぽい。


Word VBAで選択範囲を段落に拡張する(インストラクターのネタ帳)
https://www.relief.jp/docs/word-vba-extend-selection-to-paragraphs.html


仕方がないので、selection.paragraphs.countを取って、複数段落ある場合は選択範囲を拡張してから通常コピー、1段落しかない場合は、Paragraphs(1)で指定したうえでコピーすることにした。
コピーだけなのに選択範囲が変わるのはカッコ悪いけどしゃーない。


ついでにテキストでペーストするマクロ。マクロの記録から作成。

Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:=wdInLine, DisplayAsIcon:=False

ちょっとカッコ悪いので検索。以下のどちらかでOKらしい。

Selection.PasteAndFormat (wdFormatPlainText)
Selection.PasteAndFormat Type:=wdFormatPlainText

参考にしたサイト
'https://www.wordvbalab.com/code/7390/


あとは、wordにショートカットキーを登録する。

Alt + T,Oの順に押下してオプションを表示。
左のメニューから「リボンのユーザー設定」を選択。

左下のショートカットキー:「ユーザー設定(T)...」をクリック。

分類(C):からマクロを選択して、ショートカットキーを登録するマクロを選択。
割り当てるキーを押してください(N):のウィンドウを選択して、割り当てるキーを押下する。

割り当てるキーは、以下の通り。元々割り当てられてるキーは()内に記載。
段落コピーは、Ctrl + Shift + C (書式のコピー)
段落切り取りは、Ctrl + Shift + X
テキスト貼り付けは、Ctrl + Shift + V (書式の貼り付け)

書式については、書式のウィンドウを開いて最後にまとめて設定するからあんまり使わないよね。



今回は、カーソルのある段落(複数段落選択時は複数段落)をコピーして、テキスト貼り付けするマクロを紹介。ショートカットキー登録してガンガン使おうというお話でした。

通常のコピペにシフトを足すだけなので、結構使いやすいと思う。


【今後の改善点】
箇条書きをしているときに、項番までコピーされるのがうざい。。。

そんな感じで以下ソース。

Sub テキスト貼り付け()
'
' 値貼り付け Macro
'
'https://www.wordvbalab.com/code/7390/
Selection.PasteAndFormat (wdFormatPlainText)
'Selection.PasteAndFormat Type:=wdFormatPlainText
'Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:=wdInLine, DisplayAsIcon:=False
End Sub
Sub 段落コピー()
If Selection.Paragraphs.Count > 1 Then
Call 選択範囲を段落に拡張する
Selection.Copy
Else
Selection.Paragraphs(1).Range.Copy
End If
End Sub

Sub 段落切り取り()
If Selection.Paragraphs.Count > 1 Then
Call 選択範囲を段落に拡張する
Selection.Cut
Else
Selection.Paragraphs(1).Range.Cut
End If

End Sub

'https://www.relief.jp/docs/word-vba-extend-selection-to-paragraphs.html
Sub 選択範囲を段落に拡張する()
Selection.MoveStart wdParagraph, -1
Selection.MoveEnd wdParagraph, 1
End Sub


PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字