
お世話になっております。
Access VBAでRSSを読み込み指定した要素の値を取得したいのですが、ググってもよく分からず
どのようにすれば良いのか分からないので教えてください。
下記XMLの「item」の値を取得しフィールドへ値を挿入したいのです。
item_title1を読み込んだ後に次に別のレコードとしてitem_title2を読みたいといった形です。
初心者で言葉足らずの部分があると思いますが、ご教授の程よろしくお願いします。
VBA本文
Sub readXml()
Dim XDoc As MSXML2.DOMDocument
Dim node As MSXML2.IXMLDOMNode
Set XDoc = New MSXML2.DOMDocument
If XDoc.Load(CurrentProject.Path & "\" & "a.xml") = False Then
MsgBox "読み込み失敗"
Exit Sub
End If
Dim rs As New ADODB.Recordset
'データベースにデータを挿入する。
rs.Open "test", CurrentProject.Connection, , adLockOptimistic
rs.AddNew
For Each node In XDoc.selectNodes("rss/content/title")
rs!title = node.Text
rs.Update
rs.Close
End Sub
取込元XML(RSS)ソース
<?xml version="1.0"?>
<rss version="2.0">
<content>
<title>test/title>
<language>ja</language>
<item>
<title>item_title1</title>
</item>
<item>
<title>item_title2</title>
</item>
</content>
</rss>
No.1ベストアンサー
- 回答日時:
とりあえず、
item_title1
item_title2
を取得するところのみです。
時間が無いのでエクセルで試しています。ご参考まで。
Sub readXml()
Dim XDoc As MSXML2.DOMDocument
Dim i As Long
Dim root As IXMLDOMElement
Dim retNode As IXMLDOMNodeList
Set XDoc = New MSXML2.DOMDocument
If XDoc.Load(GetDesktopPath & "\" & "test.xml") = False Then
MsgBox "読み込み失敗"
Exit Sub
End If
Set root = XDoc.DocumentElement
Set retNode = root.SelectNodes("/rss/content/item/title")
For i = 0 To retNode.Length - 1
Debug.Print retNode.Item(i).Text
Next i
Set XDoc = Nothing
End Sub
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function
この回答への補足
ご回答いただきありがとうございます。
いただいたソースをもとにAccess VBAで実行してみましたが、イミデイトのエラーが出てしまっています。
どのような原因&改善策が考えられるでしょうか?
よろしければ、教えてください。
よろしくお願いします。
-2147024809 / パラメーターが間違っています。
行 :0 , カラム :0
内容 :
ファイル(URL) :
ファイル先頭からの位置 :0
No.2
- 回答日時:
#1です。
当方Access2010ですが、単純に標準モジュールにコードをコピペし、Microsoft XML v6.0に参照設定し、XMLをデスクトップに置いて実行すると、
item_title1
item_title2
が取得できました。質問者様のAccessのバージョンが不明ですが、Accessの機能は使っていないので、どのバージョンでも変わらないと思います。
エラーNo. -2147024809を検索してみましたが、それらしい情報がヒットしません。
簡単なモデルで試してみて、うまく行ったら肉付けをしていく事をお勧めします。
ご回答いただきありがとうございます。
何度か試したところ突然できるようになりました。
原因は不明です。
ご回答いただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
【マクロ】並び替えの範囲が、...
-
vba textboxへの入力について教...
-
ワードの図形にマクロを登録で...
-
エクエルのVBAコードについて教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Excel VBA 選択範囲の罫線色の...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】開いているブックの...
-
えくせるのVBAコードについて教...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
-
【ExcelVBA】5万行以上のデー...
-
VBA ユーザーフォーム ボタンク...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelにてweb関数を使い、webデ...
-
XMLパースエラー
-
HTTPステータス 404 - There is...
-
Access VBAでXMLが読み込めない
-
127.0.0.1とlocalhost
-
下水道公団の電子納品のチェッ...
-
IEが表示できないXML
-
index.rdf' の実行エラー
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
XML、XSLTの適応エラー(IEから...
-
C#でTreeViewのCheckBoxのサイ...
-
xmlファイルが上手にHTMLに変換...
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
-
ノードとは
-
4バイトを10進数に変換する方法
おすすめ情報