ADOでレコードセットを操作していると、ときたま現れるエラー。 クエリ結果にレコードが1件もない場合とかに出たりする。 0745デフォルトの名無しさん (ワッチョイ 0e4b-K+Tw)2017/08/11(金) 11:24:22.86ID:dnJD889I0 初心者ですがご教授下さい クラス内にTRが9ありそのうちの1〜4を取得したいと思っています。 現在は1しか取得できません。どう書き換えればいいでしょうか? Sub shisaku() Dim objIE As InternetExplorer Set objIE = CreateObject("Internetexplorer.Application") ' objIE.Visible = True ' objIE.navigate "http://www.aaa/aaa" Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE DoEvents Loop Dim htmlDoc As HTMLDocument Set htmlDoc = objIE.document Dim colTR, colTH, colTD, colImg As IHTMLElementCollection Set colTR = htmlDoc.getElementsByClassName("first") Dim el As IHTMLElement For Each el In colTR Set colTH = el.getElementsByTagName("th") Set colTD = el.getElementsByTagName("td") Debug.Print colTR(0).innerText Next el End Sub 0746デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 11:47:54.41ID:H2cGDcz1a>>745 なんでcolTRをclassnameで取得してんの? 0747デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 11:50:59.38ID:H2cGDcz1a あと並べて書いた場合でも変数一つずつ型指定してかないとvariantになるよ、vbaの場合 0748デフォルトの名無しさん (ワッチョイ a379-AZXx)2017/08/11(金) 13:07:34.65ID:11Y29+uU0 吉岡美穂のカキタレ 0749デフォルトの名無しさん (ワッチョイ 0e4b-J8zh)2017/08/11(金) 13:38:42.84ID:dnJD889I0>>747 vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと コピペしたものを一部変えました tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか? 0750デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 13:56:55.44ID:kj6/PAcR0>>749 処理対象によってどうすればいいか変わるから 対象が判らないとなんとも言えないのではないと思う
Sub foo() For i = 1 To 100 行 = Int(i / 2) If i Mod 2 = 1 Then Cells(行 + 1, 2) = Cells(i, 1) Else Cells(行, 3) = Cells(i, 1) End If Next End Sub 0755デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)2017/08/11(金) 15:01:16.16ID:hvV/hgBn0>>754 ありがとうございます。 でもすみません、2連続で文字のパターンもあります 正確には下のような感じです
○ q r
○ d
○ c
↓ ○ qr(セル内改行) ○ b ○ c 0756デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 15:12:27.50ID:kj6/PAcR0>>755 まず数字か文字列か判別すればいいんじゃね? if a like "[0-9]*" then って感じでできる様なきがする 0757デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)2017/08/11(金) 15:23:36.72ID:hvV/hgBn0>>756 今考えてるのは以下の感じです VBAもプログラミングも初心者のため全然コードがわかってなくてすみません
loop (i) if instr(cell(i,1),"○")<>0 sw=1
if sw=1
sw =1の時それより下のセルの情報を切り取り
loop(n) n=i+1 if instr(cell(n,1),"○")<>0 sw=0
else n=n+1 loop end
else i=i+1 loop end 0758デフォルトの名無しさん (ワッチョイ b66d-YQfT)2017/08/11(金) 15:32:45.42ID:fD8DkUIg0>>755 こう Sub foo() 行 = 1 '一行目は数字 Cells(行, 2) = Cells(1, 1) tmp = Cells(1, 1) For i = 2 To 100 If IsNumeric(Cells(i, 1)) Then '数字 Cells(行, 2) = tmp Cells(行, 3) = 文字 行 = 行 + 1 tmp = Cells(i, 1) 文字 = "" Else '文字 文字 = 文字 & vbCrLf & Cells(i, 1) End If Next End Sub 0759デフォルトの名無しさん (ワッチョイ b66d-YQfT)2017/08/11(金) 15:33:16.05ID:fD8DkUIg0>>756 なんでlikeなんだよ isnumericでいいだろw 0760デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 15:48:56.25ID:kj6/PAcR0>>759 数字を含む文字列をどっちに判別するかによるんじゃね 0761デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 16:02:01.36ID:yOhrxWpUa>>749 追記でおせっかいついでに、ie操作覚えたいなら軽くhtml勉強したほうがいいよ エクセルのオブジェクト理解せずにvbaで扱うなんて無理なのと一緒 0762デフォルトの名無しさん (ワッチョイ 4eaa-Kd4M)2017/08/11(金) 16:32:57.50ID:FWZL6nYt0 Ruby で書いた https://paiza.io/projects/HhNVuMxF20bU1t4-GMp0VQ
ary = [] File.open("File1") do |file| # 1行ずつ処理する file.each_line do |line| # 0〜9 if /^\d+$/ =~ line.chomp! ary << line + ' ' else ary[-1] = ary[-1] + line end end end