• ベストアンサー

全角文字をまとめて半角に変換する方法を教えてください!

業務上の処理で困っていることがあります。お知恵をお貸し下さい 「メーカーからCVSファイルでデータが届く→それを読み込んで伝票発行」という作業を行っているのですが 住所等の番地やマンション名等(カナ)が全て全角で入力されている状態なのです。(同じ文字列に漢字や平仮名も混じっています) 伝票発行するソフトは規定文字数が少なめなのでこれをいちいち半角に直してから 読み込まないといけません。手作業になりますし、件数も多いので困っています 「選択した行(シート全体でも構いません)の文字列で半角に直せるものは半角に変換」というマクロを組むことは可能でしょうか? 初心者レベルですが何度かVBAを使ったことはあります 何卒よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • wein1982
  • ベストアンサー率25% (1/4)
回答No.5

列全体でやる場合は 変換した列を選択して(このマクロだと一つのセルを選択しても列全体が変換されてしまうので注意してください)↓を実行してください。なお連続した列は複数列選択でできますが(例:A,B,C,D列)A列,C列といった列を選択して実行というのは私の技術ではできませんでした。。 Sub test1() Dim myRange As Range, myColumn As Integer, endRow As Integer Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set myRange = Selection myColumn = Selection.Columns.Count For i = 1 To myColumn endRow = Cells(65536, Selection.Column).End(xlUp).Row Cells(1, Selection.Column).Select Do Until Selection.Row = endRow If Selection = "" Then GoTo S1 Selection = StrConv(Selection.Value, vbNarrow) S1: ActiveCell.Offset(1, 0).Select Loop ActiveCell.Offset(0, 1).Select Next i myRange.Select Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub とりあえず列全体でしたら↑を 選択セルのみでしたら↓をお使いください。 Sub test01() Selection = StrConv(Selection.Value, vbNarrow) End Sub

erekimikan
質問者

お礼

わがままを聞いてくださりありがとうございました! シート全体の文字列を半角にしても構わない。ということだったので このマクロを少し改造して業務を行いたいと思います。 本当にありがとうございます♪m(_ _;)m

その他の回答 (4)

  • wein1982
  • ベストアンサー率25% (1/4)
回答No.4

すみません、No3ですが、説明不足です。 先程の回答だと『全ての文字列』を選択し、半角にする。という処理です。 数値も選択して半角にしたい場合は下記でお願いします(2→3になっただけですが…) Sub test02() Selection.SpecialCells(xlCellTypeConstants, 3).Select Selection = StrConv(Selection.Value, vbNarrow) End Sub またご自身で選択したセルだけについて実行するのでしたら Sub test03() Selection = StrConv(Selection.Value, vbNarrow) End Sub です。

  • wein1982
  • ベストアンサー率25% (1/4)
回答No.3

こんな感じでいかがでしょうか? Sub test01() Selection.SpecialCells(xlCellTypeConstants, 2).Select Selection = StrConv(Selection.Value, vbNarrow) End Sub

erekimikan
質問者

お礼

回答ありがとうございます! 頂いたコードを実行したら希望通りに半角になりました♪ ちなみにこれを行ではなくて列単位(複数選択できればうれしいです)で 処理を行うにはどのようなコードに変更したらよいでしょうか? 重ね重ねすみませんがよろしくお願い致します。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.2

こんにちは。  Word2003ですが、選択して、[書式]→[文字種の変換]で混在していても変換可能な文字だけ半角にできました。  csvはテキストファイルなので、ワードでも編集可能です。開くときにファイルの種類を「全てのファイル(*.*)」にしてください。  お試し下さい。 では。

erekimikan
質問者

お礼

すみません 使用ソフトを書き忘れていました(恥 エクセル2003です しかしワードも使うので参考になりました ありがとうございます!

  • whrabit
  • ベストアンサー率44% (21/47)
回答No.1

OSと使用ソフトがわかりませんが、エクセルならこんなのがありました。

参考URL:
http://oshiete1.goo.ne.jp/qa2999823.html
erekimikan
質問者

お礼

ありがとうございます! 希望していたものでした こんな関数があるのですね。。。 とても助かりました♪