回答編集履歴

3

コード修正

2019/10/21 04:41

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  これの仕様でのコード例
38
38
 
39
- オートナンバー型のフィールドは1列目とする
39
+ IDフィールドは無しとする
40
40
 
41
41
 
42
42
 
@@ -60,13 +60,15 @@
60
60
 
61
61
  For Each tr In table.getElementsByTagName("tr")
62
62
 
63
- If tr.getElementsByTagName("td").Count > 0 Then
63
+ If tr.getElementsByTagName("td").length > 0 Then
64
64
 
65
- Dim i As Long: i = 1 'テーブルの列目から代入
65
+ Dim i As Long: i = 0 'テーブルの1列目から代入
66
66
 
67
67
  Dim td As HTMLTableCell
68
68
 
69
69
  RsData.AddNew
70
+
71
+ On Error Resume Next
70
72
 
71
73
  For Each td In tr.getElementsByTagName("td")
72
74
 
@@ -75,6 +77,18 @@
75
77
  i = i + 1
76
78
 
77
79
  Next td
80
+
81
+ If Err.Number <> 0 Then
82
+
83
+ 'エラー内容をイミディエイトウィンドウへ出力
84
+
85
+ Debug.Print Err.Number & ": " & Err.Description
86
+
87
+ Err.Clear
88
+
89
+ End If
90
+
91
+ On Error GoTo 0 'エラー処理を解除
78
92
 
79
93
  RsData.Update
80
94
 

2

コード追記

2019/10/21 04:41

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -19,3 +19,77 @@
19
19
 
20
20
 
21
21
  上記のヒントを参考に、ExcelのコードをAccess用に書き換えてください。不明な点がでたら、どこまでできて、どこが不明なのか質問に追記してください。
22
+
23
+
24
+
25
+ ---
26
+
27
+
28
+
29
+ > Web上の目的のTableデータはすべてString型なので、
30
+
31
+ > Access側ではIDのオートナンバーを省いて
32
+
33
+ > Stringフィールドのみにしております。
34
+
35
+
36
+
37
+ これの仕様でのコード例
38
+
39
+ オートナンバー型のフィールドは1列目とする。
40
+
41
+
42
+
43
+ ```vb
44
+
45
+ 'Web上のテーブルデータをAccessテーブルに書き出す関数
46
+
47
+ Public Sub WriteTableData(ByVal table As HTMLTable, ByVal tblName As String)
48
+
49
+ Dim mydb As Database
50
+
51
+ Set mydb = CurrentDb
52
+
53
+ Dim RsData As Recordset
54
+
55
+ Set RsData = mydb.OpenRecordset(tblName)
56
+
57
+
58
+
59
+ Dim tr As HTMLTableRow
60
+
61
+ For Each tr In table.getElementsByTagName("tr")
62
+
63
+ If tr.getElementsByTagName("td").Count > 0 Then
64
+
65
+ Dim i As Long: i = 1 'テーブルの2列目から代入
66
+
67
+ Dim td As HTMLTableCell
68
+
69
+ RsData.AddNew
70
+
71
+ For Each td In tr.getElementsByTagName("td")
72
+
73
+ RsData.Fields(i) = td.innerText
74
+
75
+ i = i + 1
76
+
77
+ Next td
78
+
79
+ RsData.Update
80
+
81
+ End If
82
+
83
+ Next tr
84
+
85
+
86
+
87
+ RsData.Close
88
+
89
+ End Sub
90
+
91
+ ```
92
+
93
+
94
+
95
+ 直書きなのでミスがあるかも。ロジックを参考にしてください。

1

追記

2019/10/21 02:49

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
 
6
6
 
7
- 次にVBAでAccessのテーブルのデータ操作をするには、DAOを使用する場合と、ADOを使用する場合があります。それをどちらにするか決めてください。
7
+ 次にVBAでAccessのテーブルのデータ操作をするには、DAOを使用する場合と、ADOを使用する場合があります。それをどちらにするか決めてください。AccessのVBAならば、DAOの方が扱いやすいと思います。
8
8
 
9
- AccessVBAならば、DAOの方が扱いと思います。
9
+ (追記: 質問コードではDAOを使ってるようでのでそれでOKで
10
10
 
11
11
 
12
12