- ベストアンサー
エクセルのファイルにある「全角英数字」を半角に、「、」を「,」に一発で変換できるソフトはないでしょうか?
非常に沢山のエクセルファイルがあります。そのエクセルファイル内のシートにある情報全てについて一発変換をしたいです。できればシートが複数に分かれているので複数のシートであっても一発変換で済めば最高です。でも単一シートごとでも構いません。頑張れます。 全角の英字・数字を半角に、そして「、」を「,」に変換したいです。 カタカナは変換したくないです。ウェブページにアップしたいからです。 色々と探しはしたのですが、セル一行しか一度に出来ないとか全く使うには程遠いものしかありませんでして、何か良いソフト、または方策がないでしょうか。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 最初に直接関係のない話ですが、興味を持っていただいた方にお知らせしておくと、このマクロは、もともと、汎用型を想定したもので、特に、Access に関しては、Excelのような半角を全角にした時に、濁音、半濁音は丸められません。そこで、単純に文字の半角・全角の変換を行うとできません。単純な方法は、Excelのワークシートのみにしか有効ではありません。 さて、ご質問の件ですが、 全角のスペースに関しては、 'Unicodeの英数記号の全角 × myPattern = "[\uff01-\uff5a]+" myPattern = "[\uff01-\uff5a ]+" '←変更 全角スペースは半角になるはずです。半角は半角のスペースのままです。二重・三重の半角スペースは、そのままです。つづめることはしません。 ☆ 汎用性のあるマクロの登録の仕方。 >変換したいファイルを開くと最初に登録したはずの今回のコードが見当たらず、その都度コードをつくるはめに陥っております。 ふたつの方法があります。 * ひとつは、「個人用マクロ」に登録することです。 「個人用マクロ」は、マクロの記録をすると、登録の保存先を指定されますので、そこに、「個人用マクロ」を選ばせられます。そこで、ちょっと試しに、セルペポインターでもクリックするか、移動すれば、書き込まれますので、その出来た場所に、上書き登録すれば、登録されます。(ただし、保存はしてください) マクロボタンの登録の仕方は、 メニューの[ツール]-[ユーザー設定]-[コマンド]-で、 ニコチャンマークを、メニューバーにドラッグして貼り付けます。 次に、そのまま選択したボタンの編集で、[マクロの登録] で、マクロ名を登録すればよいです。「マクロの登録」で出てきたダイアログの中に、 「PERSONAL.XLS!MainMcr」と出てくるはずですから、それを登録します。 ニコチャンマークは、ボタンイメージ変更で、他のボタンを選ぶことが出来ます。 「ユーザー設定」のメニューを出してから、ボタンをクリックすると編集が可能になります。 ** (お勧め)次は、「個人用マクロ」ブックを使わない方法です。常に、そのブックを開いておく必要がありますが、必要ではないときには、常駐していないので、メモリの負担にならずに済みます。(私がよく用いる、擬似的アドインです。) そのワークシートには、使い方の説明を書いておきます。分からなくなったときに、それを読みます。(本当のアドインには、このようなことは簡単に出来ません。)使用しているときは、単に、ブックは、最小化しておくだけでよいです。 手順: ブックがあけているときだけのショートカットにしたいなって思うようでしたら、 '<標準モジュール> Sub Auto_Open() Application.OnKey "^w", "MainMcr" Application.OnKey "^W", "MainMcr" Beep '登録されたときの合図。 End Sub Sub Auto_Close() Application.OnKey "^w" Application.OnKey "^W" End Sub ブックをオープンしている時だけ、このショートカットが動きます。Ctr+ w だけで、アクティブなブックの変換が行われます。 最初、登録した時だけは、Auto_Openのところにカーソルを置いて、F5 を押して、登録できたか様子をみます。後は、必要なときに、オープンすれば、ショートカットが働きます。閉じれば、ショートカットはなくなります。 私は、とてもこれは便利だと思っています。それに、アドインのように後々の痕跡も残らないです。
その他の回答 (7)
- Wendy02
- ベストアンサー率57% (3570/6232)
Wendy02 です。 >ショートカットのところあたりがまだ理解できていないのでゆっくり見てみますので。 すみません。解説が抜けていました。 '<標準モジュール> Sub Auto_Open() 'オープン時にショートカットを登録 Application.OnKey "^w", "MainMcr" Application.OnKey "^W", "MainMcr" Beep '登録されたときの合図。 End Sub Sub Auto_Close() '終了時に、ショートカットをクリア Application.OnKey "^w" Application.OnKey "^W" End Sub 「^w」 は、「^」は、Ctrl キーを指し 「w」は、小文字で、Ctrl キーを押しながら「w」 を押すことです。 つまり、「W」も加えるのは、大文字にした時のショートカットのためです。 なお、ファンクションキーの場合は、"{F1}" などとします。 Alt キーの場合は、% ですから、 "%a" とすれば、「Alt」 キーを押しながら、「a」を押すことになります。 なお、これは、ほとんどのキーに登録することが可能です。例えば、Enter キーにも登録が可能です。
お礼
何度もありがとうございました。 オープン時にショートカットが稼動し、閉じたら開放されるわけですね。 色んなことができるのですね
- imogasi
- ベストアンサー率27% (4737/17069)
変換したいセルを範囲指定して Sub test01() Dim cl As Range For Each cl In Selection cl = StrConv(cl, vbNarrow) Next End Sub を実行してみてください。 十分テストしてませんが、長い回答が多いのでつい。 処理が十分でない場合はお許しを。 「、」は置換操作でできそう。
お礼
ありがとうございました
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 置換文字を定義しておいて、グリグリ置換する方法です。 つまり、#2 や #4 の方の方法を VBA で実現しています。 Sub WEB用文字変換() Dim SH As Worksheet Application.ScreenUpdating = False For Each SH In ActiveWorkbook.Sheets Call ConvStrCase(SH.Name) Next SH Application.ScreenUpdating = True MsgBox "Complete", vbInformation End Sub Private Sub ConvStrCase(strSheetName As String) Dim Num As String Dim Alb As String Dim ConvTbl As String Dim TargetArea As Range Dim TargetChar As String '半角化対象文字 Num = "0123456789" Alb = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ConvTbl = Num & Alb & StrConv(Alb, vbLowerCase) '置換範囲 Set TargetArea = Sheets(strSheetName).UsedRange '置換 For i = 1 To Len(ConvTbl) TargetChar = Mid$(ConvTbl, i, 1) TargetArea.Replace _ What:=TargetChar, _ Replacement:=StrConv(TargetChar, vbNarrow), _ LookAt:=xlPart, _ MatchCase:=False Next i 'その他の文字 TargetArea.Replace What:="、", Replacement:="," Set TargetArea = Nothing End Sub
お礼
うぉぉぉっ! これまたすごいですね。 私の希望した変換内容を完璧に含んでらっしゃいます・・・。す、素晴らしい。 「、」も「,」にバッチリなってますね! ざっと見た感じですが、全角のままのところは今のところ見当たりません。 ホント、皆さんのお陰です。助かります。 ファイルがメチャ多いので、昨日まで普通にやったらどれだけかかるんだ?と思ってたので、ホント、嬉しいです。ありがとうございました。
- hayochan
- ベストアンサー率37% (41/110)
置換処理でどうですか? <編集>-<置換> <検索する文字列>・・・「、」 <置換後の文字列>・・・「,」 <すべて置換> で、OKです。 シートごとですが。
お礼
自分が使いこなせてないだけでしょうか? これで叶うんなら一番簡単でいいんですが、全角英数字を半角英数字にできますかね?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 VBAのコードを紹介しておきますので、Alt + F11 で、Visual Basic Editor 画面が出たら、挿入-標準モジュールをクリックして、エディタ画面を開きます。 そして、以下のコードを貼り付けます。 後は、メニューボタンに「MainMcr」の名前を登録すれば、便利かと思います。 これは、開いてアクティブになっているワークブックのそれぞれのワークシート(グラフシートは除きます)すべてが、変換されます。ただし、定数のみで、式については変換されません。 変換の状態 あいうアイウ123abcABC、か12 ↓ あいうアイウ123abcABC,か12 '<標準モジュール> Dim objRE As Object Sub MainMcr() '実行ファイル Dim ws As Worksheet Set objRE = CreateObject("VBScript.RegExp") For Each ws In ActiveWorkbook.Worksheets Call Han2ZenR(ws.UsedRange) Next Set objRE = Nothing End Sub Private Sub Han2ZenR(rng As Range) 'VBA汎用型+Excel 用に改変 Dim myPattern As String Dim buf As String Dim soc As String Dim c As Variant Dim Match As Object, Matches As Object '正規表現パターン 'Unicodeの英数記号の全角 myPattern = "[\uff01-\uff5a]+" With objRE .Pattern = myPattern .Global = True For Each c In rng If VarType(c) = vbString And Not c.HasFormula Then soc = StrConv(c, vbWide) '一旦全角にします Set Matches = .Execute(soc) For Each Match In Matches buf = StrConv(Match, vbNarrow) 'パターンにあった部分は半角にしています soc = Replace(soc, Match, buf) soc = Replace(soc, "、", ",") Next c.Value = soc '※出力 End If Next End With End Sub
お礼
極めて具体的なご回答、誠にありがとうございます。大感謝で感激しております。 ひとつのシートに沢山の情報があり、かつシートも4・5枚あるので全てをチェックしたわけではありませんが、どうもうまくいっているようです。 試しに自分で全角英語を空いたところに入れた上でマクロりましたが、変換できてます。 しかも、ちゃんと「、」も「,」になってるじゃあありませんか! 素晴らしいですね! ひとつ気づいたのは、なぜかしらん、単語間が全角スペースに変換されてますね・・・。が、私の作業の場合は英語サイトをつくっていて、ウェブページに持っていく段階で勝手に半角スペースに変わってましたんで問題なかったんでいいんですが気づきとして。 あとは補足欄でお尋ねしたところさえクリアになれば完璧です。今こちらでも色々と触って調べている最中ですが
補足
VBコード、ありがとうございます。今試し中です。 まだ完全にチェックしてませんが、何か、いけてそうな・・・。 ひとつ確認させてもらっていいでしょうか。 >メニューボタンに「MainMcr」の名前を登録すれば、便利 とありましたよね。VBの画面を色々と見てるんですがさわったことがないのもあり、登録の仕方がわからないんです。 変換したいファイルを開くと最初に登録したはずの今回のコードが見当たらず、その都度コードをつくるはめに陥っております。 おそらくこの手間をなくすことが「登録」とおっしゃっていると思うのですが。 デフォルトでは「Module1」と出るので、それを「MainMcr」(何でもいいんでしょうが)と名称を書き換えるところまではわかるんですが・・・。
- moon_myu
- ベストアンサー率33% (39/118)
置換はダメ? 「、」→「,」で"すべて置換"は面倒かな?
お礼
そうですね、ファイルがむちゃくちゃ多いもので無理です・・・
- gucchi-you
- ベストアンサー率51% (54/105)
ASC関数、 SUBSTITUTE関数ではダメですか?
お礼
そうですね、掲載してあるサイトをいくつか見ましたが何をどうすればよいのかわからずじまいでした・・・
お礼
いやぁ・・・これまた素晴らしいですね・・・。 再びありがとうございました。 おっしゃるとおりだと思いました。マクロ常駐は重いですね。痕跡も残りませんし、アドインと違ってこのベースファイルさえ開けば、そこに使い方などいくらでも説明書きしておけばいいですから共有もしやすいですね! これが一番効果的のようです。 ショートカットのところあたりがまだ理解できていないのでゆっくり見てみますので。 ありがとうございました。