質問編集履歴

2

追記\(ソース\)

2016/09/29 11:21

投稿

yoimata
yoimata

スコア12

test CHANGED
File without changes
test CHANGED
@@ -3,3 +3,309 @@
3
3
 
4
4
 
5
5
  追記:参照設定は、Visual Basic For Applications、Microsoft Excel 16.0 Object Library、OLE Automation、Microsoft Office 16.0 Object Library、Microsoft Forms 2.0 Object Library、Microsoft HTML Object Library、Microsoft Internet Controlsです。
6
+
7
+
8
+
9
+ ソース(一部)は以下のとおりです。
10
+
11
+
12
+
13
+ Sub GetTable1()
14
+
15
+ Dim ie As InternetExplorer
16
+
17
+ Dim Doc As HTMLDocument
18
+
19
+ Dim ObjTag As Object
20
+
21
+ Dim ObjElements As Object
22
+
23
+ Dim WorkbookBackNumber As Workbook
24
+
25
+ Dim WorkbookBatting As Workbook
26
+
27
+ Dim WorkbookFielding As Workbook
28
+
29
+ Dim WorkbookStandardPitching As Workbook
30
+
31
+ Dim WorkbookBattingAgainst As Workbook
32
+
33
+ Dim WorkbookRelieverPitching As Workbook
34
+
35
+ (宣言を一部省略)
36
+
37
+ '年度を指定
38
+
39
+ iYear = 1888
40
+
41
+
42
+
43
+ '選手IDを指定
44
+
45
+ playerNo = 3
46
+
47
+
48
+
49
+ 'MLBのURLを指定
50
+
51
+ strURLMLB = "http://www.baseball-reference.com/leagues/NL/1888.shtml"
52
+
53
+
54
+
55
+ '球団名を指定
56
+
57
+ strTeamNm(1) = "NYG"
58
+
59
+ strTeamNm(2) = "CHC"
60
+
61
+ strTeamNm(3) = "PHI"
62
+
63
+ strTeamNm(4) = "BSN"
64
+
65
+ strTeamNm(5) = "DTN"
66
+
67
+ strTeamNm(6) = "PIT"
68
+
69
+ strTeamNm(7) = "IND"
70
+
71
+ strTeamNm(8) = "WHS"
72
+
73
+
74
+
75
+ 'IEを開いて操作対象画面へ遷移
76
+
77
+ Set ie = CreateObject("InternetExplorer.Application")
78
+
79
+
80
+
81
+ ie.Visible = True
82
+
83
+ ie.Navigate strURLMLB '"http://kakaku.com/pc/note-pc/se_15/"
84
+
85
+ Call waitNavigation(ie)
86
+
87
+ Set Doc = ie.document
88
+
89
+
90
+
91
+ (一部省略)
92
+
93
+
94
+
95
+ Workbooks.Open "C:\Users\yoima\Documents\プロ野球\データベース\ExcelDat\" & iYear & "\選手名鑑(メジャー).xls"
96
+
97
+ Set WorkbookPlayerList = Workbooks("選手名鑑(メジャー).xls")
98
+
99
+
100
+
101
+ iTeamLast = 1
102
+
103
+
104
+
105
+ (一部省略)
106
+
107
+ For iCnt = iTeamLast To 30
108
+
109
+
110
+
111
+ If strTeamNm(iCnt) = "" Then Exit For
112
+
113
+
114
+
115
+ 'チームのURLを指定
116
+
117
+ ie.Navigate strURLTeam(iCnt) '"http://kakaku.com/pc/note-pc/se_15/"
118
+
119
+ Call waitNavigation(ie)
120
+
121
+
122
+
123
+ ReDim strURLPlayer(0)
124
+
125
+ ReDim strPlayerName(0)
126
+
127
+ ReDim strPosition(0)
128
+
129
+ URLSize = -1
130
+
131
+
132
+
133
+ 'Debug.Print Doc.all.Length
134
+
135
+
136
+
137
+ (一部省略)
138
+
139
+ For i = playerFirst To UBound(strURLPlayer)
140
+
141
+
142
+
143
+ (一部省略)
144
+
145
+
146
+
147
+ GetBackNumberFlg = False
148
+
149
+ GetBattingFlg = False
150
+
151
+ GetFieldingFlg = False
152
+
153
+ GetPitchingInfoFlg = False
154
+
155
+
156
+
157
+ (一部省略)
158
+
159
+
160
+
161
+ If Doc.all(j).tagName = "DIV" Then
162
+
163
+
164
+
165
+ 'ヘッダ
166
+
167
+ If Doc.all(j).ID = "div_batting_standard" Then
168
+
169
+
170
+
171
+ '打撃成績ファイルの作成
172
+
173
+ If Dir("C:\Users\yoima\Documents\プロ野球\データベース\ExcelDat\" & iYear & "\打撃成績(メジャー)\Batting_" & playerNo & ".xls") <> "" Then
174
+
175
+
176
+
177
+ Workbooks.Open "C:\Users\yoima\Documents\プロ野球\データベース\ExcelDat\" & iYear & "\打撃成績(メジャー)\Batting_" & playerNo & ".xls"
178
+
179
+ Else
180
+
181
+ Workbooks.Add
182
+
183
+ strBookName = ActiveWorkbook.Name
184
+
185
+ Workbooks(strBookName).SaveAs "C:\Users\yoima\Documents\プロ野球\データベース\ExcelDat\" & iYear & "\打撃成績(メジャー)\Batting_" & playerNo & ".xls"
186
+
187
+ End If
188
+
189
+
190
+
191
+ 'Set WorkbookBatting = Workbooks("Batting_" & playerNo & ".xls")
192
+
193
+ Set WorkbookBatting = ActiveWorkbook
194
+
195
+
196
+
197
+ WorkbookBatting.Sheets("Sheet1").Cells(1, 1) = Doc.all(j + 35).innerText 'Year
198
+
199
+ (一部省略)
200
+
201
+
202
+
203
+ End If
204
+
205
+
206
+
207
+ End If
208
+
209
+
210
+
211
+ If Doc.all(j).tagName = "TR" Then
212
+
213
+
214
+
215
+ If InStr(Doc.all(j).ID, "batting_standard") > 0 Then
216
+
217
+
218
+
219
+ k = 2
220
+
221
+
222
+
223
+ Do
224
+
225
+
226
+
227
+ If Doc.all(j).tagName = "TR" And (InStr(Doc.all(j + 1).innerText, "Yrs") > 0 Or InStr(Doc.all(j + 1).innerText, "Yr") > 0) Then Exit Do '末尾になったら終了
228
+
229
+
230
+
231
+ If Doc.all(j).tagName = "TR" Then
232
+
233
+
234
+
235
+ If ((InStr(Doc.all(j).ID, "batting_standard.") > 0) Or (Doc.all(j).className = "partial_table")) And (Doc.all(j + 1).innerText = iYear) Then
236
+
237
+
238
+
239
+ StrongEmCnt = 0
240
+
241
+
242
+
243
+ 'データ
244
+
245
+ WorkbookBatting.Sheets("Sheet1").Cells(k, 1) = Doc.all(j + 1).innerText 'Year
246
+
247
+
248
+
249
+ (一部省略)
250
+
251
+ j = j + 31 + StrongEmCnt
252
+
253
+
254
+
255
+ Do Until Doc.all(j).tagName = "TR" '次年度の先頭行へ移動
256
+
257
+
258
+
259
+ j = j + 1
260
+
261
+ Loop
262
+
263
+
264
+
265
+ k = k + 1
266
+
267
+ Else
268
+
269
+ j = j + 1
270
+
271
+
272
+
273
+ Do Until Doc.all(j).tagName = "TR" '次年度の先頭行へ移動
274
+
275
+
276
+
277
+ j = j + 1
278
+
279
+ Loop
280
+
281
+
282
+
283
+ End If
284
+
285
+ End If
286
+
287
+ Loop
288
+
289
+
290
+
291
+ WorkbookPlayerList.Save
292
+
293
+
294
+
295
+ WorkbookBatting.Save
296
+
297
+ WorkbookBatting.Close
298
+
299
+
300
+
301
+ GetBattingFlg = True
302
+
303
+ End If
304
+
305
+
306
+
307
+ End If
308
+
309
+
310
+
311
+ (以下略)

1

追記

2016/09/29 11:21

投稿

yoimata
yoimata

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1 +1,5 @@
1
1
  Windows10、Excel2016のVBAにてInternet Explorerからのデータ取得を行っております。処理中に「オートメーションエラーです。ライブラリの形式が古いか、または種類が無効です。」とのエラーメッセージが表示されます。良い解決方法があったら教えてください。よろしくお願いします。
2
+
3
+
4
+
5
+ 追記:参照設定は、Visual Basic For Applications、Microsoft Excel 16.0 Object Library、OLE Automation、Microsoft Office 16.0 Object Library、Microsoft Forms 2.0 Object Library、Microsoft HTML Object Library、Microsoft Internet Controlsです。