アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えて下さい!
Accessで宛名印刷のレポートを作っているのですが、
縦書きにした場合、半角のカタカナで入力された会社名や、住所の番地、ビルの階の数字が横に寝てしまいます。これを解消するために、StrConv関数を使って、全角の大文字に変換しようとしたのですが、うまくいきません。
たとえばレポートに会社名、住所、住所1のテキストボックスを配置し、会社名/住所は、「会社Address」テーブルから読み込み、住所1には、住所を全角に変換した住所を表示するとします。
レポートプロパティの「読み込み時」に以下のコード
住所1.value = StrConv([会社Address]![住所1], vbWide)
を記述したのですが、うまくいきません。

いい方法はないでしょうか。
あるいはもっと簡単にできる方法などはあるのでしょうか。

A 回答 (3件)

Accessのはがき印刷ウィザードでレポートを作成すると次のようなプロシージャーが自動で作成されます。


変数stを文字列として取得し、その中の文字一つ一つを検査し"0123456789"のどれかが存在した場合、漢数字に変換するというものです。

rgchSBCSNum = "0123456789"

rgchDBCSNum = Chr$(-32177) & Chr$(-32176) & Chr$(-32175) & Chr$(-32174) & Chr$(-32173) & Chr$(-32172) & Chr$(-32171) & Chr$(-32170) & Chr$(-32169) & Chr$(-32168)

rgchKanjiNum = Chr$("-32422") & Chr$("-30486") & Chr$("-27663") & Chr$("-29105") & Chr$("-29076") & Chr$("-29476") & Chr$("-26534") & Chr$("-29003") & Chr$("-27478") & Chr$("-29725")



Private Function ToKanjiNum(st As String) As String
 Dim stKanji As String, ch As String
 Dim i As Integer, iNum As Integer
  For i = 1 To Len(st)
    ch = Mid$(st, i, 1)
    iNum = InStr(1, rgchSBCSNum, ch, vbBinaryCompare)
    iNum = IIf(iNum < 1, InStr(1, rgchDBCSNum, ch, vbBinaryCompare), iNum)
    If iNum > 0 Then
       stKanji = stKanji & Mid$(rgchKanjiNum, iNum, 1)
    Else
      stKanji = stKanji & ch
     End If
  Next i
  ToKanjiNum = stKanji
End Function
    • good
    • 0

テキストボックスのコントロールソースに直接


=StrConv([会社Address]![住所1], 4)
とするか(VBAとしてではないのでvbWideは使えません)

テキストボックスの名称を住所1以外(住所1A等)にして
フォーマット時イベントで
住所1A.value = StrConv([会社Address]![住所1], vbWide)
としてください。

もちろん#1の方の言う通り、クエリで設定する方法もあります。

この回答への補足

どうもありがとうございました。
No1さんのコメントにも書きましたが、半角を全角に変換すると、カタカナの縦書きはうまくいくのですが、
住所の番地などの数字とハイフンがおかしくなることを発見しました。
ハガキの縦書きを想定してるのですが、
いい方法があるでしょうか。

補足日時:2004/03/19 16:56
    • good
    • 1

選択クエリを作成すると全角に変換できます。


手順
<準備>
(1) クエリの新規作成 窓からデザインビューを選択し、OKポタン
(2) 住所録があるテーブルを選択し、追加ボタン、閉じるポタン
(3) 半角のデータがあるフィールドをダブルクリック
たとえば[住所]・・・半角データがあるフィールド

<いよいよ更新クエリの変更と更新内容の設定です>
(4) (3)のつづきでメニューバーのクエリをクリック、更新(u)クリック
(5) レコード更新窓へ Strconv([住所],4)

上記の通り 4 と入れた後 更新クエリを実行すると全角に更新してくれますよ。

試してください。
成功を祈ってます。

この回答への補足

どうもありがとうございました。
vbWideが4,にあたるのですね。クエリではパラメータを聞いてきて悩んでいました。
全角にできたのはいいのですが、今度は
1."-(ハイフン)"が縦書きではハイフンが漢数字の"一"のようになり、縦棒にならない。
2.二桁以上の数字がたて並びになる。
との不具合がでました。
半角のカタカナ、数字まじりの住所を縦書きでおかしくならないようにするには、何が一番いいのか新たな問題が出てきました。

補足日時:2004/03/19 16:48
    • good
    • 0

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

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

関連するカテゴリからQ&Aを探す