非常に沢山のエクセルファイルがあります。そのエクセルファイル内のシートにある情報全てについて一発変換をしたいです。できればシートが複数に分かれているので複数のシートであっても一発変換で済めば最高です。でも単一シートごとでも構いません。頑張れます。
全角の英字・数字を半角に、そして「、」を「,」に変換したいです。
カタカナは変換したくないです。ウェブページにアップしたいからです。
色々と探しはしたのですが、セル一行しか一度に出来ないとか全く使うには程遠いものしかありませんでして、何か良いソフト、または方策がないでしょうか。
No.6ベストアンサー
- 回答日時:
こんにちは。
最初に直接関係のない話ですが、興味を持っていただいた方にお知らせしておくと、このマクロは、もともと、汎用型を想定したもので、特に、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 を押して、登録できたか様子をみます。後は、必要なときに、オープンすれば、ショートカットが働きます。閉じれば、ショートカットはなくなります。
私は、とてもこれは便利だと思っています。それに、アドインのように後々の痕跡も残らないです。
いやぁ・・・これまた素晴らしいですね・・・。
再びありがとうございました。
おっしゃるとおりだと思いました。マクロ常駐は重いですね。痕跡も残りませんし、アドインと違ってこのベースファイルさえ開けば、そこに使い方などいくらでも説明書きしておけばいいですから共有もしやすいですね! これが一番効果的のようです。
ショートカットのところあたりがまだ理解できていないのでゆっくり見てみますので。
ありがとうございました。
No.8
- 回答日時:
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 キーにも登録が可能です。
No.5
- 回答日時:
こんにちは。
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
うぉぉぉっ! これまたすごいですね。
私の希望した変換内容を完璧に含んでらっしゃいます・・・。す、素晴らしい。
「、」も「,」にバッチリなってますね!
ざっと見た感じですが、全角のままのところは今のところ見当たりません。
ホント、皆さんのお陰です。助かります。
ファイルがメチャ多いので、昨日まで普通にやったらどれだけかかるんだ?と思ってたので、ホント、嬉しいです。ありがとうございました。
No.3
- 回答日時:
こんにちは。
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
この回答への補足
VBコード、ありがとうございます。今試し中です。
まだ完全にチェックしてませんが、何か、いけてそうな・・・。
ひとつ確認させてもらっていいでしょうか。
>メニューボタンに「MainMcr」の名前を登録すれば、便利
とありましたよね。VBの画面を色々と見てるんですがさわったことがないのもあり、登録の仕方がわからないんです。
変換したいファイルを開くと最初に登録したはずの今回のコードが見当たらず、その都度コードをつくるはめに陥っております。
おそらくこの手間をなくすことが「登録」とおっしゃっていると思うのですが。
デフォルトでは「Module1」と出るので、それを「MainMcr」(何でもいいんでしょうが)と名称を書き換えるところまではわかるんですが・・・。
極めて具体的なご回答、誠にありがとうございます。大感謝で感激しております。
ひとつのシートに沢山の情報があり、かつシートも4・5枚あるので全てをチェックしたわけではありませんが、どうもうまくいっているようです。
試しに自分で全角英語を空いたところに入れた上でマクロりましたが、変換できてます。
しかも、ちゃんと「、」も「,」になってるじゃあありませんか! 素晴らしいですね!
ひとつ気づいたのは、なぜかしらん、単語間が全角スペースに変換されてますね・・・。が、私の作業の場合は英語サイトをつくっていて、ウェブページに持っていく段階で勝手に半角スペースに変わってましたんで問題なかったんでいいんですが気づきとして。
あとは補足欄でお尋ねしたところさえクリアになれば完璧です。今こちらでも色々と触って調べている最中ですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) Excel 365 フリーズ 頻発 エクセルのセルの中に日本語の文章を全角半角和文英文数字を混ぜて入 3 2022/12/12 15:09
- デスクトップパソコン 40年間の悩み キーボードにおいて初期値として漢字ローマ字変換に設定する方法 8 2023/05/08 14:50
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Mac OS Macの変換ですが、一発で半角英字に変換する方法は無いですか? 3 2022/04/10 22:19
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハイフンが真ん中にうてません。
-
( ・∇・) ←この顔文字なんて打...
-
emacsでカタカナ変換するにはど...
-
縦書きにした時の数字を漢数字...
-
Excel 全角数字を半角数字に
-
エクセルで引き算をする場合、...
-
全角カタカナを半角カタカナに...
-
かなで書かれた文字をアルファ...
-
JISコードで入力する方法を...
-
一太郎:全角ハイフンの出し方
-
ATOK2017で半角文字を辞書登録...
-
テンキーの1を押すと2つ数字...
-
停電後iMacの電源が入らない。
-
PC メーカーロゴが出ないのに W...
-
MacBookのデュアルディスプレイ...
-
数字が二つ出てしまうのはなぜ?
-
Touch IDの反応が悪いです。先...
-
Spotifyが勝手に起動
-
imac G3のCDが取り出せない
-
ワードで、勝手に平体になる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
縦書きにした時の数字を漢数字...
-
emacsでカタカナ変換するにはど...
-
ハイフンが真ん中にうてません。
-
WordやExcelで英数字のみ半角ま...
-
JISコードで入力する方法を...
-
かなで書かれた文字をアルファ...
-
Wordで勝手に全角(日本語入力...
-
エクセルで引き算をする場合、...
-
数字入力が半角になってしまう
-
パワーポイントで全角を半角に...
-
エクセルで半角文字に色を付け...
-
ATOKで確定後の全角を半角にす...
-
ホームページビルダー15。ス...
-
全角カタカナを半角カタカナに...
-
ジャストシステムのATOKについて
-
全角を半角に変換したい
-
入力モードを常に「ひらがな」...
-
!や?を、どうやって出しますか?
-
一太郎の()が勝手に半角になる
-
( ・∇・) ←この顔文字なんて打...
おすすめ情報