質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1390閲覧

ACCESSからWebサイトに情報を自動入力させたい

t.camellia

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/09/25 06:18

前提・実現したいこと

ACCESSからWEBサイト(佐川急便の伝票を作成するサイト)に住所や氏名等の自動入力をさせたいです。

発生している問題・エラーメッセージ

該当のWEBサイトの入力画面の住所部分が16字以内の制限付の為、町村まで(漢字)と丁目番地以降(数字)を分けたい(東京都千代田区千代田と1-1のように)ので、下記の太字部分InStr関数とMIN関数で一番最初にくる数字を割り出してLeft関数で分ける様にして試してみたのですが、そもそも作動してくれないか該当部分の直前で止まってしまいます。他にいい方法か修正すべき部分等アドバイス頂けないでしょうか。
該当部分以外は作動します。

該当のソースコード

Private Sub 佐川_Click()
With driver
.Start "chrome"
.Get "https://www.e-service.sagawa-exp.co.jp/"
.FindElementByCss("body > div > main > div > div > label.p-tabs__label.p-tabs__label--02").Click
.FindElementById("user2").SendKeys ("XXXXXXXX")
.FindElementById("pass2").SendKeys ("XXXXXXXX")
.FindElementByCss("body > div.u-bg--login > main > div > div > div.p-tabs__content.p-tabs__content--02 > div > div:nth-child(1) > div > dl > dd.p-login__body.u-pb0 > button").Click
.Get "https://e-hiden3.sagawa-exp.co.jp/a/nsx/web/menu"
.FindElementByCss("#content > div > div.mainPanel > div:nth-child(2) > div.ra-panel-content > div.kihonGyomuContainer > div.okjSksei > button").Click
.FindElementByCss("#content > div > div:nth-child(5) > div.el-dialog__wrapper.ra-popup > div > div.el-dialog__body > div:nth-child(1) > button:nth-child(1)").Click
End With

Dim YUBIN, NAME, TEL, JUU1, JUU2, TEMP, TEMP2, TEMP3, MINIMUM YUBIN = Me!郵便番号 NAME = Me![氏名(漢字)] TEL = Me!電話番号 JUU1 = Me![住所1] JUU2 = Me![住所2] If Len(JUU2) > 0 Then TEMP = NAME NAME = JUU2 JUU2 = TEMP End If driver.FindElementById("input-otdkSkYbn").SendKeys (YUBIN)

__ **TEMP2 = Left(JUU1, Min(InStr(1, JUU1, "1""2""3""4""5""6""7""8""9")) - 1)
TEMP3 = Right(JUU1, (Len(JUU1) - Len(TEMP2)))

driver.FindElementById("input-otdkSkJsy1").SendKeys (TEMP2) driver.FindElementById("input-otdkSkJsy2").SendKeys (TEMP3)

**__
NAME = Replace(NAME, "㈱", "株式会社")
NAME = Replace(NAME, "㈲", "有限会社")
NAME = Replace(NAME, "髙", "高")
NAME = Replace(NAME, "﨑", "崎")

If JUU2 <> "" Then JUU2 = Replace(JUU2, "㈱", "株式会社") JUU2 = Replace(JUU2, "㈲", "有限会社") JUU2 = Replace(JUU2, "髙", "高") JUU2 = Replace(JUU2, "﨑", "崎") End If driver.FindElementById("input-otdkSkNm1").SendKeys (NAME) If JUU2 <> "" Then driver.FindElementById("input-otdkSkNm2").SendKeys (JUU2) If TEL <> "" Then driver.FindElementById("input-otdkSkTel").SendKeys (TEL) Stop

End Sub

補足情報(FW/ツールのバージョンなど)

ACCESS for Microsoft 365を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

vba

1 TEMP2 = Left(JUU1, Min(InStr(1, JUU1, "1""2""3""4""5""6""7""8""9")) - 1)

のコードが希望の動作にならないということですね。

これだと「1"2"3"4"5"6"7"8"9」という文字列を検索していることになり、住所にそのような文字列があるはずもないので当然ですね。また、VBAにMinなどという関数もありません。
InStrには、曖昧な検索をする機能はないので、関数を自作する必要があります。

例えば、標準モジュールに下記のような関数を作成して、

vba

1'最初の数字の位置を返す 2'Nullまたは空文字列""の場合は0を返す 3'数字がない場合は、文字列全体の長さを返す 4Public Function InStrNum(s As Variant) As Long 5 If IsNull(s) Then Exit Function 6 InStrNum = Len(s) 7 Dim c As String, i As Long 8 For i = 1 To Len(s) 9 If IsNumeric(Mid(s, i, 1)) Then 10 InStrNum = i 11 Exit For 12 End If 13 Next 14End Function

使い方は下記のような感じです。

vba

1Dim pos As Long 2pos = InStrNum(JUU1) 3TEMP2 = Left(JUU1, pos-1) 4TEMP3 = Mid(JUU1, pos)

投稿2021/09/25 06:41

編集2021/09/25 07:15
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t.camellia

2021/09/25 08:15

hatena19さん ありがとうございます。無事に動くように出来ました。
hatena19

2021/09/25 09:29

解決したのなら、解決済み処理をお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問