クリップボードから Excel に CSV テキストを貼り付ける方法と、貼り付けの区切り文字をカンマに切り替えるマクロを検討します。
テキストデータの貼り付け
セルのデータをいったんテキストにして、テキストエディタの高度な編集機能で編集・加工することはよくあります。
Excel からコピーしたデータはこの時、セル値の「タブ区切り」となり、テキスト編集後はそのまま、シートに貼り付るだけで戻せます。
ところで、手元にあるテキストデータが CSV 形式で、これをそのまま Excel シートに貼り付けたいこともあります。
これも TAB と同様に「カンマ区切り」で分割してシートに貼り付ける事はできないものでしょうか。
手作業で CSV データを貼り付けるには
CSV データを貼り付ける方法について調べてみました。
まず、テキスト貼り付け時の区切り文字を変更する設定そのものは、Excel に存在しないようです。
しかし、区切り文字を変更させることは可能です。
「区切り位置」コマンドの「区切り位置ウィザード」で「区切り文字」を指定できますが、これが貼り付け時の区切り文字にも影響を与えます。
「区切り位置ウィザード」の「区切り文字」で 、デフォルトの「タブ」を「カンマ」に変更して一度完了をすると、以降、テキストの貼り付けでもカンマが区切り文字として使用されます。
どうも、直近で使用した「区切り位置ウィザード」ダイアログでの指定内容が、繰り返し作業の負担を軽減するためか Excel のどこかに保持されていて、テキストの貼り付けでもそれが流用されるということのようです。
ただ残念なことに、セルを「コピー」したときの方の区切り文字には反映されないようで、相変わらず「タブ区切り」のままです。
テキストの貼り付けに影響するのは「区切り位置ウィザード」の2ページ目の内容で、テキストの貼り付けだけでなく「テキストファイルウィザード」の初期状態に影響を与えます。
【手順例】
- 適当に、値のあるセルを選択します
- たとえば A1 セルに文字"a"を入力しておき、選択状態にします
- 「区切り位置ウィザード」を開きます
- キー操作:
Alt
⇒A
⇒E
- キー操作:
- 1ページ目(1/3)の「元データの形式」で「カンマやタブなどの区切り文字によって~」を選択し(デフォルトのまま)「次へ」ボタンを押します。
- 2ページ目(2/3)の「区切り文字」ボックスで「タブ」のチェックを外し、「カンマ」のみチェックが入った状態にします
- 「連続した区切り文字は~」のチェックは外した方がいいでしょう
- 「文字列の引用符」はダブルクオート(")のままでOKです
- 「完了」ボタンを押します(3ページ目は不要)
これで以降、CSV が貼り付けられるようになります。
テキストエディタから CSV データを Excel にコピー&ペーストして見てください。「カンマ区切り」でフィールドデータがセルに入力される状態になっているはずです。
「タブ区切り」に戻すには上記手順で「タブ」のみにチェックが入っている状態に設定します。
また、Excelを終了するとその設定は失われ、次回起動時にはタブ区切りに戻ります。
テキストの区切り文字を切り替えるマクロ
TAB とカンマで区切り文字を切り替えるマクロを作成しました。
本マクロ VBA を実行すると、テキストの区切り文字が TAB からカンマ(",")に変更され、CSVテキストの貼り付けで、各フィールドがセルに分割されます。
以降、同マクロを実行する度に、TABとカンマで区切り文字が切り替わります。
(「カンマ区切り」で「コピー」もできてほしいという要望もありますが、それはまた別の課題とします)
Option Explicit Sub 区切り文字の切り替え_タブ⇔カンマ() Static useCSV As Boolean useCSV = Not useCSV Dim c As Range Set c = ActiveSheet.UsedRange.Rows(1) Set c = c.Cells(1, c.Cells.Count + 1) Application.ScreenUpdating = False Application.EnableEvents = False c.Value = "a" c.TextToColumns _ Tab:=Not useCSV, _ Comma:=useCSV, _ ConsecutiveDelimiter:=False, _ TextQualifier:=xlTextQualifierDoubleQuote c.Clear Application.EnableEvents = True Application.ScreenUpdating = True End Sub
【使い方】
- 上記 VBA プログラムを標準モジュールにコピー&ペーストします
- 本マクロを実行します
- クリップボードにコピーしたカンマ区切りのテキストを、シートに「貼り付け」します
- CSVの各値がセルに入力されます
- マクロを実行するたびに、貼り付けの区切り文字が TAB とカンマで切り替わります
【注意】 本マクロの実行後の状態は、「区切り位置ウィザード」と「テキストファイルウィザード」の、2ページ目の初期状態にも反映されます。
まとめ
CSV のカンマ区切りで分割するように、テキスト貼り付けの区切り文字の変更するには、「区切り位置ウィザード」で「区切り文字」にカンマを設定します。
本記事の内容は、Windows 10 の Excel 2013 で動作確認しました。