No.3ベストアンサー
- 回答日時:
こんばんは。
私は、ちょうど、それ専用のWord用、Excelデータの漢数字変換プログラムを作りましたが、ご希望に沿えるものか、設定などの手間からすると、ちょっとなんとも言えません。
はがき打ち出し用の専用ソフトのほうがよいのではないか、と思います。
なお、#1さんのものは、残念ながら、Excel VBAではなく、Visual Basic(non VB.Net)のコードです。Excel VBAに移植は出来ますが、用途としては、少し違います。
'----------------------------------------------------
設定の仕方:
データのシートのシートタブを右クリック-コードの表示で以下を貼り付けます。
次に、
Const FROW As Integer = 1 '住所の最初の行
Const FCOL As Integer = 1 '住所の最初の列
これを書き換えます。今は、1行目、1列になっていますが、これは、「A1」からデータが始まります、ということです。
一旦、Alt+ Q で、その画面を締めます。
次に、ワークシート画面で、表示(V)-ツールバー-コントロールツールで、
コマンドボタン□をクリックして、適当なセルに貼り付けます。
それをもう一度繰り返して、もうひとつのコマンドボタンを□貼り付けてください。
そうしたら、最初のボタン□をダブルクリック、もう一つのボタン□もダブルクリック
そうすれば、ボタンはそれぞれ設定されます。
注意:コマンドボタンは、シートには何もないものとして書かれていますので、もしある場合は、CommandButton の次の数字が変わります。その場合は、ご自身で修正してください。
最初のボタンに右クリック-コマンドボタン オブジェクトで、-編集
ホームで最初の行に飛んで、「漢数字」
もう一つの方は、「数字」
と入れて、うまく字が収まったと思ったら、コントロールツールバーの「青い三角定規」をオンからオフにクリックすると、それで出来上がりです。ボタンの大きさのバランスが悪いようだったら、「青い三角定規」を押して、その囲まれたラインの「・(点)」をドラッグして形を整えてください。
後は、邪魔なコントロールツールバーを隠してしまってください。
以下は、Excel2000で作られたものですが、今、Excel2003で試してみると、Excel2003 VBAは、どうやらおかしなバグがあるようですので、それに合わせて調整しました。これは、数年前に作ったもので、若干、今の私の書き方と違います。
'----------------------------------------------------
'シートモジュール専用
'----------------------------------------------------
'Option Explicit
Private Const FROW As Integer = 1 '住所の最初の行
Private Const FCOL As Integer = 1 '住所の最初の列
Private Sub CommandButton1_Click()
Dim sanFig
Dim kanFig
Dim i As Integer, k As Integer, j As Integer
Application.ScreenUpdating = True
i = 0
j = 0
k = 0
sanFig = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "―")
kanFig = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "-", "-")
Do Until IsEmpty(Cells(FROW + j, FCOL).Value) = True
For i = 0 To 11
If Cells(FROW + j, FCOL).Value Like "*[0-9-]*" = True Then
Cells(FROW + j, FCOL).Replace What:=sanFig(i), Replacement:=kanFig(i), LookAt:=xlPart, _
MatchCase:=False, MatchByte:=False
End If
Next i
If k = 0 Then k = 1 Else k = 0: j = j + 1
Loop
Application.ScreenUpdating = True
MsgBox "漢数字に変換しました。"
End Sub
Private Sub CommandButton2_Click()
'漢数字からアラビア数字に変換
Dim sanFig
Dim kanFig
Dim i As Integer, k As Integer, j As Integer
i = 0
j = 0
k = 0
Application.ScreenUpdating = False
kanFig = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "-", "―")
sanFig = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "-")
Do Until IsEmpty(Cells(FROW + j, FCOL).Value) = True
For i = 0 To 11
If Cells(FROW + j, FCOL).Value Like "*[〇一二三四五六七八九[-]]*" = True Then
If k = 1 Then Cells(FROW + j, FCOL).Value = "'" & Cells(FROW + j, FCOL).Value
Cells(FROW + j, FCOL).Replace What:=kanFig(i), Replacement:=sanFig(i), LookAt:=xlPart, _
MatchCase:=False, MatchByte:=False
End If
Next i
If k = 0 Then k = 1 Else k = 0: j = j + 1
Loop
Application.ScreenUpdating = True
MsgBox "アラビア数字に変換しました。"
End Sub
大変、申し訳ありませんでした。微に入り細に入り説明をして頂き有難うございました。質問を出させて頂いた甲斐がありました。一度には出来ませんが手間隙をかけて挑戦したいと思います。又の時は、よろしくお願いいたします。本当に有難うございました。
No.4
- 回答日時:
追伸:
Option Explicit から8行目辺りに、
Dim i As Integer, k As Integer, j As Integer
Application.ScreenUpdating = True
とありますが、
正しくは、
Dim i As Integer, k As Integer, j As Integer
Application.ScreenUpdating = False '訂正後
でした。実際に動作を確認するために、そのような設定になっていました。お使いのようなら、訂正をお願いします。なお、Excelでは、数字でないものに対しては、NumberString 関数や書式設定は、対象が数字でないと使用できませんので、このような方法になっております。
No.2
- 回答日時:
Excel側で処理する方法と,Word側で共通スイッチを設定する方法があります。
Excel側で処理する方法は,表示の仕方を「DBNUM1」を用いて漢数字にしておいてから書式を引き継いでWordへ差し込むとか,「NUMBERSTRING」という関数を用いてあらかじめ変換しておく方法があります。
http://itpro.nikkeibp.co.jp/article/NPC/20060214 …
Word側で処理する場合ですが,Word2000では,フィールドコードの文字書式スイッチ「\*dbnum1」を使うと良いと思います。
http://ikutawasabi.hp.infoseek.co.jp/f91.htm
縦書きの場合は,フォント名に「@」が付いている縦書きフォントにしておいた方がいいかもしれません。(例えば,「1-2-3」のようにハイフンが入っている場合)
もし,「@」が付いたフォントが一覧になければ,自分で「@」を打ち込んでください。(例:「MS明朝」→「@MS明朝」にする)
Word2002以降では,縦書きに変換するフィールドコードがあるようです。
http://www.relief.jp/itnote/archives/001624.php
No.1
- 回答日時:
はじめまして
こんなマクロを見つけました。
ご要望にぴったりだと思います。
http://www.bcap.co.jp/hanafusa/VBHLP/kansuuji.htm
参考URL:http://www.bcap.co.jp/hanafusa/VBHLP/kansuuji.htm
早々と回答頂き有難うございました。マクロの箇所を試してみたいと思います。参考URLの件、参考になりました。丁寧に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
押したボタンの位置取得(共通の...
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
ShowAllDataのエラーを回避したい
-
スクロールしてもボタンを常に...
-
コマンドボタンがあるかどうか...
-
Accessのコマンドボタンの立体...
-
エクセルVBA シート上にあるコ...
-
エクセルのコマンドボタンの位...
-
EXCELでNo.を変えて印刷したい
-
Accessユーザーフォームでコマ...
-
コマンドボタン 改行したい
-
PPTのコマンドボタンがクリック...
-
エクセルVBA
-
ボタン同時押しの時間設定について
-
ROCKET MOUSEの使い方
-
コマンドボタンで「終了ボタン...
-
エクセル ハイパーリンク先で...
-
ACCESSのコマンドボタン...
-
エクセルVBAでOptionButtonのオ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
Accessのコマンドボタンの立体...
-
コマンドボタンがあるかどうか...
-
PPTのコマンドボタンがクリック...
-
エクセルVBA シート上にあるコ...
-
EXCELでNo.を変えて印刷したい
-
エクセルVBA
-
エクセルVBAでOptionButtonのオ...
-
[ExcelVBA] コマンドボタンを押...
-
ShowAllDataのエラーを回避したい
-
Excel VBA --- コマンドボタ...
-
Wordでドラッグした文字列を括...
-
コマンドボタンで「終了ボタン...
-
ROCKET MOUSEの使い方
-
MS_AccessからPDFファイルを開...
-
エクセルでコマンドボタンを押...
-
コマンドボタンの画像も拡大表...
おすすめ情報