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

いまwordで漢数字を算用数字に変換したくて困っています。
三十五を35にしたいのですが何かいい方法ありませんか?
アドバイスお願いします。

A 回答 (4件)

こんばんは。



即席で、マクロを作ってみました。
ThisDocument か、標準モジュールに登録してご利用ください。
まだ、試験段階ですが、この両方の漢数字を、対象にして、ThisDocument 内の全ての漢数字を変換します。

例:

一二三四五六七八九〇
十二億三千四百五十六万七千八百九十

なお、現在は、コンマ切りはしていません。
リクエストによって、直します。

マクロ名は、Kansu2Suji_henkan

Option Explicit
Sub Kansu2Suji_henkan()
Dim t As Integer, myMsg As String
Dim moji As String
Selection.HomeKey Unit:=wdStory '文書の先頭に
On Error GoTo Errmsg:
With Selection.Find
  .ClearFormatting
  .Text = ""
  .Replacement.Text = ""
  .MatchFuzzy = False
While .Execute(FindText:="[一二三四五六七八九兆億万千百十〇]{1,}", _
  Wrap:=wdFindContinue, MatchWildcards:=True) = True
  moji = Selection.Range
  Selection.Range = Kansu2SujiDec(moji)
  t = t + 1
  If t = 0 Then GoTo Msg
Wend
Msg:
   Selection.HomeKey Unit:=wdStory '文書の先頭に
   If t > 0 Then
    myMsg = t & "語、変換しました。"
   Else
    myMsg = "変換するべき数字はありません"
   End If
   MsgBox myMsg, , Title:="漢数字からアラビア数字に"
End With
  Exit Sub
Errmsg:
  MsgBox "エラー!: " & Err.Description, vbExclamation
End Sub
Private Function Kansu2SujiDec(ByVal moji As String)
 Dim i As Integer, k As Integer, m As Integer, j As Integer
 Dim fig As Double, buf As Double, bufk(1 To 3)
 Dim sum As Double, f As Variant, s As String
 Const keta1 As String = "〇一二三四五六七八九"
 If moji Like "[" & keta1 & "]" & "[" & keta1 & "]*" Then
  s = moji
  For j = 0 To Len(keta1) + 1
   s = Replace(s, Mid(keta1, j + 1, 1), CStr(j))
  Next j
  Kansu2SujiDec = CDbl(s)
  Else
  For i = 1 To Len(moji)
   fig = myFindfig(Mid(moji, i, 2), k, m)
   If m > 0 Then
    bufk(m) = buf * fig
    buf = Empty
    Else
    buf = buf + fig
   End If
   i = i + k
   k = 0: m = 0
  Next i
  For Each f In bufk
   sum = sum + f
  Next
  Kansu2SujiDec = sum + buf
 End If
End Function
Private Function myFindfig(ByRef s As String, k As Integer, m As Integer)
 Dim lc1 As Integer, lc2 As Integer, lc3 As Integer
 Const keta1 As String = "一二三四五六七八九"
 Const keta2 As String = "十百千"
 Const keta3 As String = "万億兆"
 If s Like "[" & keta1 & "]" & "[" & keta2 & "kata3" & "]" Then
  k = 1
  lc1 = InStr(keta1, Left$(s, 1))
  lc2 = InStr(keta2, Right$(s, 1))
  lc3 = InStr(keta3, s)
  If lc2 > 0 Then
   myFindfig = 10 ^ lc2 * lc1
  ElseIf lc3 > 0 Then
   myFindfig = 10 ^ (4 + lc3 * 4)
  End If
  Else
  lc1 = InStr(keta1, Left(s, 1))
  lc2 = InStr(keta2, Left(s, 1))
  lc3 = InStr(keta3, Left(s, 1))
  If lc3 > 0 Then m = lc3
  myFindfig = lc1 - (lc2 <> 0) * 10 ^ lc2 - (lc3 <> 0) * 10 ^ (lc3 * 4)
 End If
End Function
    • good
    • 0

どれくらいの数があるのかわかりませんが、「編集」の「変換」で漢数字を数字に変換するのはどうでしょうか?


例えば、「三」を「3」に「五」を「5」に、「十」は「」(なし)にすれば、
もしくはダイレクトに「三十五」を「35」にする。
    • good
    • 0

三十五の頭にカーソルを置き左クリック三十五の終わりまでドロー青くして変換を押すと 35 35   参拾五などが候補に出ますよ。

  
    • good
    • 0

このようなフリーソフトがあります。


http://www.vector.co.jp/soft/winnt/util/se338739 …
    • good
    • 0

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