@mameta0824 既に500以上あるからとりあえずテキストから一式ブッコぬいて以降は1か2でちまちまメンテが安定かな?
@kousaka_mil
超久しぶりにVBAしてみて、ID取れたので、超適当なコードですが一応共有します
添付機能にテキストファイル使え無かったので、文字数の関係上、3つくらいに分割して貼り付けますね(苦笑)
@kousaka_mil
Sub GetItemIdStart()
Dim itemName As String
Dim iRow As Integer
iRow = 5
Do Until Cells(iRow, 2).Value = ""
itemName = Cells(iRow, 2).Value
itemId = GetItemId(itemName)
Cells(iRow, 3).Value = itemId
iRow = iRow + 1
Loop
MsgBox ("処理が完了しました")
End Sub
@kousaka_mil
Function GetItemId(ByVal itemName As String)
'unitrixの該当ページをブラウザで表示する
Dim ie As New InternetExplorer
ie.Visible = False
ie.navigate "http://unitrix.net/?w=Noatun&i=" & itemName
'ページが表示完了されるまで待つ
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
'表示したHTMLからIDの含まれる文字列を取得する
Dim doc As New HTMLDocument
Dim h2, span As Object
Dim onmouseover As String
@kousaka_mil
Set doc = ie.document
Set h2 = doc.getElementsByTagName("h2")(0)
Set span = h2.getElementsByTagName("span")(0)
onmouseover = span.getAttribute("onmouseover")
'IDの含まれる文字列から、正規表現でアイテムIDのみ取得する
Dim regex As Object
Dim matches As Variant
Dim itemId As String
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = ".+\[([0-9]+)].+"
regex.Global = True
Set matches = regex.Execute(onmouseover)
itemId = matches(0).submatches(0)
'ブラウザを閉じる
ie.Quit
GetItemId = itemId
End Function
@mameta0824 あざまーす。とりあえず初期データ作ったらこれベースでくみこんで今後の運用で楽させていただきます。
これ系の知識はそれほどないので助かります。
てか、まめさんくらいできると、ぶっちゃけあのツールは笑えるくらいに雑なつくりにしてあるのがわかるだろうな、とw
@kousaka_mil
見づらくてごめんなさい。
コードをtxtで保存したものや、excelも添付できない拡張子でした😂
少しでも役立ったら嬉しいです☺️
excelにどう組み込んで良いか分からなかったら聞いてくださいね~
どんだけ私を過大評価されてるんですかw大して変わらないと思いますよw
それと、綺麗な作りにすることも大事ではありますけど、それよりも期待通りの動作をすることや、時間をかけ過ぎないことも大事なので、今くらいで丁度良いと思いますよ~
@kousaka_mil
excelにはっつけてやるなら、ExcelのVBA使ってunitrixをスクレイピングすればいけそう