[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/11/01(Mon) 18:19
投稿者名:riderX
Eメール:
URL :
タイトル:
VB6.0で住所の分割を行いたい
AccessのVBAではできるのですが、
VBに移行するとエラー?になってしまいます。
何か良い方法は無いですか?

よろしくお願いします。

投稿時間:2004/11/01(Mon) 18:32
投稿者名:java.lang.Nullpo
Eメール:
URL :
タイトル:
Re: VB6.0で住所の分割を行いたい
> AccessのVBAではできるのですが、
> VBに移行するとエラー?になってしまいます。
> 何か良い方法は無いですか?
>
> よろしくお願いします。

情報が少なすぎて、答えられないような気がするのですが...
ファイルを分割するのですか?
どの場所(どの条件)で分割するのですか?
どのような手法で分割しようと考えていますか?

投稿時間:2004/11/02(Tue) 04:51
投稿者名:いな
Eメール:
URL :
タイトル:
Re^2: VB6.0で住所の分割を行いたい
質問の要点の絞り方は、『はじめにお読みください』にあるとおり。

  >表題 ――       あいさつではなく用件を書きましょう
  >書き出し ――      最初に問題の要旨を書きましょう
  >実行手順 ――     手順は箇条書きで書きましょう   
  >結果の予想 ――     期待した結果を書きましょう
  >実際の結果 ――     実際に起きたことを書きましょう
  >ステップ明記 ――   どこからうまく行かなくなったかを書きましょう
  >実際の値 ――     条件を具体的に書きましょう
  >エラーメッセージ ―― 必ずコピー&ペーストしましょう
  >判断理由 ――     そのように考えた理由を書きましょう
  >文献の引用 ――     読者の手間を省くように書きましょう
  >ソース ――      関連する部分を抽出して示しましょう
  >環境 ――       自分の環境をはっきり書きましょう
  >過去ログ ――     投稿前に過去ログを読みましょう
  >検索エンジン ――   投稿前に、自分で検索してみましょう
  >まとめのメール ――  投稿した本人が要点を簡潔にまとめましょう

でまとめてみてはいかがでしょうか?

投稿時間:2004/11/02(Tue) 08:35
投稿者名:riderX
Eメール:
URL :
タイトル:
Re: VB6.0で住所の分割を行いたい
すみません!
確かに説明不足でした。m(_ _)m
文章書くの苦手なんですよね;^o^)A

AccessのVBAでの処理です。

Option Compare Database
Private Declare Function SeparateAddress Lib "C:\Program Files\Microsoft Office\Office\MSYubin7.dll" (ByVal szAddress As String, ByVal szZip5 As String, ByVal szZip7 As String, ByVal szKen As String, ByVal szCty1 As String, ByVal szCty2 As String, ByVal szTwn As String, ByVal szTwnExt As String) As Long

Public Sub prcAddSet(strFullAdd As String, strAdd() As String)

    Dim stZip5 As String, stZip7 As String
    Dim stKen As String, stCty1 As String, stCty2 As String, stTwn As String
    Dim stExt As String
    
    stZip5 = String(10, 0)
    stZip7 = String(10, 0)
    stKen = String(256, 0)
    stCty1 = String(256, 0)
    stCty2 = String(256, 0)
    stTwn = String(256, 0)
    stExt = String(1024, 0)
    
    If SeparateAddress(strFullAdd, stZip5, stZip7, stKen, stCty1, stCty2, stTwn, stExt) = 0 Then
        strAdd(1) = ""
        strAdd(2) = strFullAdd
        strAdd(3) = ""
        strAdd(4) = ""
        strAdd(5) = ""
        strAdd(6) = ""
    Else
        strAdd(1) = Trim(Left$(stZip7, InStr(1, stZip7, Chr$(0), vbBinaryCompare) - 1))
        strAdd(2) = Trim(Left$(stKen, InStr(1, stKen, Chr$(0), vbBinaryCompare) - 1))
        strAdd(3) = Trim(Left$(stCty1, InStr(1, stCty1, Chr$(0), vbBinaryCompare) - 1))
        strAdd(4) = Trim(Left$(stCty2, InStr(1, stCty2, Chr$(0), vbBinaryCompare) - 1))
        strAdd(5) = Trim(Left$(stTwn, InStr(1, stTwn, Chr$(0), vbBinaryCompare) - 1))
        strAdd(6) = Left$(stExt, InStr(1, stExt, Chr$(0), vbBinaryCompare) - 1)
    End If

End Sub

これをVBに移行すると分割されません。

何か良い方法は無いですか?
よろしくお願いします。

これでも、やっぱりわかりにくいですよね?
どう書いたらいいのかなぁ?

分割するのは・・・
郵便番号
都道府県
市区町村
町域名

と、言うふうに分けたいのですが・・・・

投稿時間:2004/11/02(Tue) 09:58
投稿者名:java.lang.Nullpo
Eメール:
URL :
タイトル:
Re^2: VB6.0で住所の分割を行いたい
長々とソースコードのコピペお疲れ様。

> これをVBに移行すると分割されません。
「うまく」いかないのは、重々承知です。
で、「どう」うまくいかないのか説明していただけないと。
「結果がすべて空文字になってしまうよー」とか(すら)ありませんよね?

> 何か良い方法は無いですか?
> よろしくお願いします。

> これでも、やっぱりわかりにくいですよね?
> どう書いたらいいのかなぁ?
「どこ」が「こうなる」からダメだという憶測も立てられませんか?
デバッグモードで1行ずつ動かして、自分なりに自己分析してくれないと。
さもないと、ライブラリ内のSeparateAddress()が原因なのかもわからないし。

# さまざまな可能性を全部答えるの面倒なんですよ。(私の場合だけかもしれませんが)

投稿時間:2004/11/02(Tue) 10:11
投稿者名:riderX
Eメール:
URL :
タイトル:
Re^3: VB6.0で住所の分割を行いたい
レスありがとございます。
誠に申し訳ありません。
文章の書き方までご教授いただいて・・・・

> 「結果がすべて空文字になってしまうよー」とか(すら)ありませんよね?
ずばりのとーりです!
すべて空白になっちゃいます。

> デバッグモードで1行ずつ動かして、自分なりに自己分析してくれないと。

原因は多分「SeparateAddress()」だと思います。
この結果が0で返ってきています。
AccessVBAでは0以外か帰ってくるのですが。

投稿時間:2004/11/02(Tue) 12:52
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: VB6.0で住所の分割を行いたい
> Private Declare Function SeparateAddress Lib "C:\Program Files\Microsoft Office\Office\MSYubin7.dll" (ByVal szAddress As String, ByVal szZip5 As String, ByVal szZip7 As String, ByVal szKen As String, ByVal szCty1 As String, ByVal szCty2 As String, ByVal szTwn As String, ByVal szTwnExt As String) As Long

まず、MSYubin7.dll のライセンスについての認識はお持ちでしょうか。
hhttp://support.microsoft.com/Default.aspx?scid=kb;ja;414071

VBから利用したいのであれば、下記を使ってみてください。
hhttp://www.adv.co.jp/products/yu7v2/