プロが教える店舗&オフィスのセキュリティ対策術

0ffice365を利用しています。

WordやExcelで英数字のみ(ひらがな、カタカナ以外)を半角または全角にしたいです。
Excelでは列を追加して[ASC]や[JIS]関数を使えば変換できますが、同じセル内で変換したいです。
ワードでは添付の図のように、全角、半角一括変換したら、カタカナも全角、半角になってしまいます。

検索画面で[0-9 A-Z](全て全角入力)を入力し、ワイルドカードを使用して
全角文字を選択、半角に変換できると調べたのですが、上手くいかず。。。

何か良いやり方ないでしょうか。。。
早く、簡単に行ないたいのですが。。。
調べたのですが、上手く検索できず。。。

教えて頂ければと思います。

「WordやExcelで英数字のみ半角また」の質問画像

A 回答 (6件)

Wordなら簡単に指定できますよ。


http://office-qa.com/Word/wd209.htm
全角英数字を半角英数字にする場合
[検索]で[ワイルドカード]を指定。
 検索する文字列に [0-9a-zA-Z]
[検索先]を[メイン文書]で検索対象をすべて選択状態にします。
検索ダイアログを閉じてから[文字種の変換]で[半角]を選択。
これで希望する結果になります。
その他の検索対象の例
http://www.office-qa.com/Word/wd212.htm
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

簡単に出来ました。

お礼日時:2022/08/07 19:34

以下は Excel VBA 版。

こちらも自己責任で。
VBAの実行結果はUNDOできませんので事前にバックアップを。

'/Excel VBA-------------------------------------------------------------------
' 定数セルのみ対象(数式やシェープは対象外)
'
Public Sub 全シートの全角半角を統一()
  
  Dim sh As Worksheet
  
  For Each sh In ActiveWorkbook.Worksheets
    If sh.ProtectContents Then
      MsgBox "シート [" & sh.Name & "] は保護されています", vbExclamation
    Else
      '英数字の半角化
      Call RegStrConvertInWorksheet(sh, "([0-9a-zA-Z]+)", vbNarrow)
      '半角カナの全角化
      Call RegStrConvertInWorksheet(sh, "([ー\uFF61-\uFF9F]+)", vbWide Or vbKatakana)
    End If
  Next

End Sub

Private Sub RegStrConvertInWorksheet( _
  ByRef sh As Worksheet, _
  ByRef reg_pattern As String, _
  ByVal mode As VbStrConv _
)

  If Len(reg_pattern) = 0 Then Exit Sub

  On Error Resume Next
  Dim datas As Range
  Set datas = sh.Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
  On Error GoTo 0
  
  If datas Is Nothing Then Exit Sub
  
  On Error GoTo Err_Handler
  
  Dim reg As Object 'RegExp
  Set reg = CreateObject("VBScript.RegExp")
  
  With reg
    .Pattern = reg_pattern
    .Global = True
    .IgnoreCase = False
  End With
  
  Dim area As Range
  For Each area In datas.Areas
    Dim buff As Variant: buff = area.Value
    If Not IsArray(buff) Then
      Dim tmp As Variant: tmp = buff
      ReDim buff(1 To 1, 1 To 1)
      buff(1, 1) = tmp
    End If
    Dim i As Long, j As Long
    For i = 1 To UBound(buff)
      For j = 1 To UBound(buff, 2)
        Dim mc As Object 'MatchCollection
        Dim m As Object 'Match
        Set mc = reg.Execute(buff(i, j))
        For Each m In mc
          buff(i, j) = Replace$(buff(i, j), m, StrConv(m, mode))
        Next
        Set mc = Nothing
      Next
    Next
    area.Value = buff
  Next

Finally:
  Set reg = Nothing
  Exit Sub
Err_Handler:
  MsgBox Err.Description, vbCritical, "ERROR: Procedure: RegStrConvertInWorksheet"
  End
End Sub
    • good
    • 0
この回答へのお礼

度々の回答ありがとうございました。

お礼日時:2022/08/07 19:35

こんにちは。



自分で使ってるVBAソースです。Excel と Word のものがありました。

自分用に書いたソースなので、必要最低限、コメントも入ってなかったです。
ちゃんとエラー処理してませんし、ご利用の結果に責任は負いません。
試す前にバックアップを取るなどの対策を行い、自己責任でお願いします。

ソースの貼り方とか、実行の仕方などは、、、ご自身で調べて下さい。

PowerPoint のものは無かったですが、同じ手法(RegExp)でできると思います。

'/WORD VBA ----------------------------------------------------------
'
Public Sub 英数半角化およびカタカナ全角化()
  Call StrConvert(ActiveDocument, "[0-9a-zA-Z]{1,}", vbNarrow)
  Call StrConvert(ActiveDocument, "[ヲ-゚]{1,}", vbWide)
End Sub

Private Sub StrConvert( _
  ByRef doc As Word.Document, _
  ByRef pattern As String, _
  ByVal mode As VbStrConv _
)
  Dim sel_range As Range
  With doc
    Set sel_range = .Range(.Range.End - 1, .Range.End - 1)
  End With
  With sel_range.Find
    .Text = pattern
    .Forward = False
    .Wrap = wdFindStop
    .MatchWildcards = True
  End With
  With sel_range
    Do While (.Find.Execute)
      'Debug.Print .Text
      .Text = StrConv(.Text, mode)
      .Collapse wdCollapseEnd
    Loop
  End With
  
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2022/08/07 19:34

時間と手間をかけて「置換」なさい。



あるいは、
 ・関数を使って別の場所に変換したものを
 ・コピーして
 ・元の場所に「値」として貼りつける。
 ・貼り終わったら、変換した先は削除。
これでスッキリします。

・・・

マクロを使うという手もありますが、
この質問から質問者さんには敷居の高いことだろうと推測されます。
自身でできる最善策を選びましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Excelだと関数を使う、
Wordだと一文字ずつ置換する

というのが私のスキルの限界でしょうか。

http://office-qa.com/Word/wd209.htm

上記サイトを見たのですが、上手くいかず、、、

お礼日時:2022/08/03 09:16

[0-9 A-Z]を一文字づつ文字置換するのはどうでしょう?


マクロも組めると思いますが...
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり一文字ずつ行なうのが早いでしょうか。..

数字10文字、英字26字なので40回近く行なえばいいのでしょうが、、、
もう少し早くできないでしょうか。。。

Excelではやはりマクロでしょうか。
(Wordのマクロは使ったことがありません。。。)
Excelだと、マクロの記録、でどこかのファイルで全角→半角に置換したマクロを作成しておき、使いまわすのがよいでしょうか。。。

マクロは一から作ることが出来ません。..
PowerPointでも全角→半角に統一したいのです。
PowerPointにマクロってありましたでしょうか。。。
お知恵を貸して頂ければと思います。

お礼日時:2022/08/03 08:36

caps look

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています