お世話になっております。
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で質問しましょう!
似たような質問が見つかりました
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/07 08:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAでXMLが読み込めない
-
HTTPステータス 404 - There is...
-
東芝のDynabookなのですがアン...
-
コンテキストメニュークリック...
-
特殊記号が勝手にエスケープさ...
-
<xsl:key>とtopreceding-siblin...
-
UTF-8でエンコーディングとはど...
-
SNMP リンクダウンとノードダ...
-
【アプリ開発】日本語を含むXML...
-
Visual Basic .NET の識別子は...
-
ツリービューを閉じさせたくない。
-
C言語:文字列の並び替え
-
複数のxmlファイルの合体
-
XSLTでの正規表現判定
-
XML、XSLTの適応エラー(IEから...
-
XMLで要素が記述された順番に意...
-
XMLで特殊文字を扱うにはどうし...
-
translateの応用?文字の置換
-
Math.sqrt(Math.pow(canvas.wid...
-
C# TreeViewのノードの判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelにてweb関数を使い、webデ...
-
Access VBAでXMLが読み込めない
-
MagpieRSSを使用して自分のHPに...
-
simplexml_load_file() のかわ...
-
IEが表示できないXML
-
127.0.0.1とlocalhost
-
アメブロ rss 読み込み
-
Access VBAで指定した要素を読...
-
下水道公団の電子納品のチェッ...
-
DTDで、空要素をエラーしたい
-
RSS2.0の書き方
-
HTTPステータス 404 - There is...
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
-
バッチファイルでテキストファ...
-
XML、XSLTの適応エラー(IEから...
-
XMLで要素が記述された順番に意...
-
XML同じ名前の要素を自動で集約...
-
xmlファイルが上手にHTMLに変換...
-
UTF-8でエンコーディングとはど...
おすすめ情報