見出し画像

ExcelやGoogle スプレッドシートでセル内改行を使用しているとき、コピーすると付加される「"」を削除するKeyboard Maestroマクロ

ExcelやGoogle スプレッドシートでセル内改行を使用しているとき、コピーするとセルの先頭と末尾に「"」が付加されます。

全世界レベルで毎日、この「"」を消す作業で時間が浪費されています。そろそろ環境設定にオフる機能がついてもよいと思うのですが、そのような動きはありません。

Excel 改行 コピー 引用符」で検索すると、たくさんの記事が出てきますが、解決策としては次のやり方が挙げられています。

  • VBAで対応(ただし、複数セルには非対応)

  • 編集状態にしてからコピー

  • ペースト後にがんばる

これについて長年検討してきましたが、Keyboard Maestroを使って解決できそうです。

Excel、またはGoogle スプレッドシート上で、異なるキーボードショートカット(option + Cキー)でコピーしたタイミングで引用符をクリーンアップします。

そもそも引用符はどの条件で付くのか

次の3つのケースが想定されます。

[A]セル内に改行があるとき

  • 先頭と末尾に「"」が付く

"本日は晴天なり。
山路を登りながら。"

[B]セル内に改行があり、文中に「"」があるとき

  • 先頭と末尾に「"」が付く

  • 文中の「"」は「""」に

"コピーするとセルの先頭と末尾に「""」が付加されます。
山路を登りながら。"

[C]セル内に改行があり、セルの先頭に「"」があるとき

  • 先頭と末尾に「"」が付く

  • 文中の「"」は「""」に

  • セルの先頭の「"」は「"""」に

"""Excel""や""Google スプレッドシート""が対象です。
山路を登りながら。"


Keyboard Maestroを使った解決方法(1)Excelの場合

Excelの場合には[Filter System Clipboard with Remove Styles]アクションを通すと、上記のABCともに期待どおりに整形されます。

整形結果はクリップボードに入っていますので、そのまま、⌘ + Vでペーストできます。

Keyboard Maestroを使った解決方法(2)Excelの場合 その2

「This application Deactivates」をトリガーにすることで、Excelから別のアプリに移るタイミングで発動できます。

これだとキーボードショートカットいらずです。

【注意】Excel → Google スプレッドシート、Excel → InDesignにコピー&ペーストを行うとき、必要な情報が駆け落ちてしまうのでご注意ください。

Keyboard Maestroを使った解決方法(3)Google スプレッドシートの場合

Excelと異なり、Google スプレッドシートには手間がかかります。

正規表現で検索置換

「Search and Replace Using Regular Expression」アクションを用いて、次のように設定します。

  • 検索条件:^"

  • 置換条件:(空白)

「^」は先頭という意味ですので、先頭の"を対象にします。

同様に次のように検索置換で末尾の"を削除します。

  • 検索条件:"$

  • 置換条件:(空白)

複数セルへの対応

複数セルをコピーしたときに対応できるように、(?m)を付けます。

(?m)^"

複数の「"」をひとつに

「^"」を削除したので「"""」も「""」になっています。
念のため、「"+」("が1つか、それ以上)のように検索条件を設定し、「"」で置換します。

「"{2,}」と書いてもよさそうです。

対応するアプリケーション

新規グループを作成し、次のアプリケーションが対象になるように設定します。

  • Excel

  • Google スプレッドシートを使うブラウザー

ここまでのまとめ

Excelの場合、Google スプレッドシートの場合を次のように分岐させます。

  • キーボードショートカット:option + Cキー(変更可能)

  • 念のため、[Copy]アクションを入れておく

例外

Excelでは、"simple"や"to go"ような場合でも引用符は残ります。

一方、Google スプレッドシートの場合には削除されてしまいます。また、時間を作って考えたいと思います。

Clipboard Changed Triggerは使えないの??

クリップボードの内容が変わることをトリガー(発火条件)にする「Clipboard Changed Trigger」を使えばよさそうです。

実は「Clipboard Changed Trigger」でトライしていて、半日ほどハマりました… 「Search and Replace Using Regular Expression」を使って検索置換すると、その度にクリップボードの内容が変わりますので、マクロがループします。

いったん変数に入れて、別のマクロでその変数をInsert Text by Pastingするという方法もありますが、マクロが2つ必要になるので却下しました。

ダウンロード

Keyboard Maestroマクロを1つ共有します。

ここから先は

8字 / 1ファイル
月に10-20本くらいの記事を投稿しています。定期購読されると、更新のお知らせを受け取ったり、マガジン限定記事やサンプルファイルをダウンロードできます。 購読を開始した月に更新された記事から読むことができます(初月無料)。

DTP Transit 定期購読マガジン

¥100 / 月 初月無料

マガジン限定記事やサンプルファイルをダウンロードできます。

定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5