WordなどにWebページを単純にコピーすると、書式を含むテキストがペーストされてしまう。単純なテキストとして貼り付けるには、右クリックメニューで[貼り付けオプション]の[テキストのみ保持]を選択してペーストしなければならない。これを簡単なコマンドでテキストのみにする方法を紹介しよう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象:Windows 10
Webページなどでコピーしたものを「Microsoft Word」などにペースト(貼り付け)すると、Webページに設定されていた書式設定まで含めてコピーされてしまう。便利な点もあるが、テキストのみを貼り付けたい場合には、貼り付けたい位置で右クリックメニューを開き、[貼り付けオプション]の[テキストのみ保持]を選択しなければならず、少々面倒だ。
また、Webブラウザ上のサービスでは、右クリックメニューに[貼り付けオプション]の項目がなく、貼り付け可能な最もリッチな情報(Webページの一部を貼り付けた場合は、HTML形式となる)が貼り付けられてしまう(サービスによっては[Ctrl]+[Shift]+[V]キーでテキストのみをペーストできることもあるが)。
テキスト形式としたい場合は、いったんメモ帳などに貼り付けて、書式設定のないテキスト状態にしてから、コピーして貼り付けるという作業を行っている人も意外と多いのではないだろうか。これはかなり面倒だ。
実は、Webページなどをコピーすると、クリップボードにはHTML形式のデータの他にテキストデータ、場合によってはビットマップなどのさまざまな形式で保存される仕組みとなっている(クリップボードに仕組みについては、Tech TIPS「Windowsでクリップボードの中身をのぞき見る方法」参照のこと)。貼り付ける際には、クリップボードの中から貼り付け側のアプリケーションが受け取り可能な形式の中で、最もリッチなものが選択される。[貼り付けオプション]では、クリップボードの中にあるデータの形式を選択可能にすることで、テキストのみなどの貼り付けを可能にしているわけだ。
[貼り付けオプション]がない場合に、テキストのみで貼り付けたいのであれば、クリップボードの中にあるデータをテキスト形式のみにしてしまえばよい。メモ帳に貼り付けて、再びコピーするのは、まさにこの作業でもある。
メモ帳に貼り付けるのは面倒なので、これをPowerShellのコマンドレットで実行できる方法を考えてみた。以下、Windows 10に標準装備のPowerShell 5.1を前提として、その手順を紹介しよう(PowerShell 5.1より後のバージョンのPowerShellについては、記事末尾で注意点を説明する)。
[スタート]メニューで[Windows PowerShell]を選択して、PowerShellの画面を開く。管理者アカウントで起動する必要はない。
Webページなどをコピー([Ctrl]+[C]キー)してクリップボードにデータを入れた状態にしておき、以下のコマンドを実行する。
Get-Clipboard -Format Text | Clip
「Get-Clipboard」は、クリップボードのデータを取り出すコマンドレットだ。「-Format Text」オプションでテキスト形式のデータのみを取り出し、それを「Clip」でクリップボードにリダイレクトして戻している。クリップボードをテキスト形式のデータのみにするおまじないと思えばいい。
これを実行後、貼り付けたいアプリケーションで[Ctrl]+[V]キーを押せば、[貼り付けオプション]で[テキストのみを保持]などを選択しなくても、テキスト形式で貼り付けられる。
上記のコマンドレットを実行しても、文字化けしてしまい思ったように貼り付けられないことがある。これは、PowerShellの文字コードの扱いに起因する。上記のコマンドレットでは、Get-Clipboardでテキスト形式のみ取り出した後に、「Clip」で「clip.exe(クリップボードの実態)」にリダイレクトしている。この際、PowerShellのデフォルトでは、文字コードが「US-ASCII」となっているため、日本語がうまく扱えずに文字化けを起こしてしまうのだ。
上記のコマンドレットを実行して、文字化けが起きている場合、PowerShell上で、「$OutputEncoding」を実行してみよう。以下のように表示されて、「EncodingName」が「US-ASCII」となっているはずだ。
以下のコマンドレットを実行して、日本語(Shift-JIS)が扱えるようにしよう。
$OutputEncoding = [Console]::OutputEncoding
今度は、「EncodingName」が「日本語 (シフト JIS)」となるはずだ。
これで文字化けにならず、テキストが貼り付けられるようになったはずだ。もし文字化けが変わらない場合は、次のようにShift-JISを明示して指定してみよう。
$OutputEncoding = [System.Text.Encoding]::GetEncoding("Shift-JIS")
なお、クリップボードにコピーしたテキストに絵文字などのShift-JISでは表現できない文字が含まれていた場合、上記のようにエンコーディングを変更しても文字化けしてしまうので注意してほしい。
上記のコマンドレットは、PowerShellを起動するたびに実行しなければならず少々面倒だ。また、Webページなどを貼り付けるたびに、毎回、PowerShellを起動するのも手間である。
そこで、デスクトップにエンコードをShift-JISにして、クリップボードからテキストのみを取り出して、クリップボードに戻すPowerShellのショートカットを作成しておこう。
Copyright© Digital Advantage Corp. All Rights Reserved.