Benefit Stationで購入したnanacoギフトをマイクーポンから一括登録するVBAマクロ
2023年の4月にベネフィットステーションで
nanacoギフトを大量に購入しました。
いつまでたってもギフト番号を記載したメールが届かないので
おっかしーな、と思っていたところ、
どうやら仕様が変わったらしく
マイクーポンに届くようになりました。
そこからギフト番号を取得するように
マクロを改変しました。
下記コードで
ベネアカウント、ベネアカウントパスワード、
nanaco番号、会員メニューパスワード
以上4か所を自分のものに書き換えて
マクロを実行してください。
先にも述べましたように
全くスマートではなく
あくまで個人使用のマクロです。
無料でお使いいただけます。
2023年3月時点では
J's コンシェル で購入したギフトコードは
メールで送付されており
先のブログ記事で対応できると思います。
他は存じません。
---
Sub BenefitS用マクロ()
Dim Driver As New Selenium.WebDriver
Dim target As Range
Dim myBy As New By
Dim nanacoURL As String
Dim flag As Boolean
Driver.Start "chrome"
Driver.Get "https://mypage.bs.benefit-one.inc/mypage/coupon/"
Driver.FindElementByCss("#username").SendKeys "ベネアカウント"
Driver.FindElementByCss("#password").SendKeys "ベネアカウントパスワード"
Driver.FindElementByCss("#password-login-btn").Click
Driver.Wait 2000
Driver.FindElementByCss("#capture > main > div > div.mb-6 > ul > li > div > div:nth-child(2) > h3").Click
Driver.Wait 1000
i = 1
Do
Driver.FindElementsByClass("c-checkbox__box")(i).Click
i = i + 1
xpath1 = "/html/body/div[1]/div/div[1]/main/div/div/div[1]/div/div[2]/div/div/ul/li["
xpath3 = "]/div/div/label/div[1]"
xpath2 = i
xpath4 = xpath1 & xpath2 & xpath3
flag = Driver.IsElementPresent(myBy.XPath(xpath4))
Loop Until flag = False
Driver.FindElementByCss("#capture > main > div > div > div.p-mypage-coupon__header > div > div:nth-child(2) > div > div > div > div > button").Click
Driver.Wait 1000
For j = 1 To i - 1
xpath1 = "/html/body/div[1]/div/div[1]/main/div/div/div[1]/div[2]/div[2]/div/div[1]/div[2]/ul/li["
xpath3 = "]/div/div[3]/p[2]/span"
xpath2 = j
xpath4 = xpath1 & xpath2 & xpath3
ActiveSheet.Cells(j, 1) = Driver.FindElementByXPath(xpath4).Text
Next j
k = 1
Do
nanacoURL = Cells(k, 1)
If nanacoURL = "" Then Exit Do
Driver.Start "chrome"
Driver.Get nanacoURL
'nanaco番号入力
Driver.FindElementByCss("#nanacoNumber01").SendKeys "nanaco番号"
'会員メニュー用パスワード入力
Driver.FindElementByCss("#pass").SendKeys "会員メニュー用パスワード"
Driver.FindElementByCss("#loginPass01").Click
Driver.FindElementByCss("#gift > a").Click
Driver.FindElementByCss("#register > form > p > input[type=image]").Click
Driver.SwitchToNextWindow
FWFlag = False
Do
FWFlag = Driver.IsElementPresent(myBy.Css("#submit-button"))
Driver.Wait 1000
Loop Until FWFlag = True
Driver.FindElementByCss("#submit-button").Click
FWFlag1 = False
FWFlag2 = False
Do
FWFlag1 = Driver.IsElementPresent(myBy.Css("#nav2Next > input[type=image]:nth-child(2)"))
FWFlag2 = Driver.IsElementPresent(myBy.Css("#navNext > a > img"))
Driver.Wait 1000
Loop Until FWFlag1 = True Or FWFlag2 = True
If FWFlag1 = True Then
Driver.FindElementByCss("#nav2Next > input[type=image]:nth-child(2)").Click
Driver.Quit
Set Driver = Nothing
Else
Driver.Quit
Set Driver = Nothing
End If
k = k + 1
Loop
End Sub
---