2016-07-19 15 views
-1

Excel VBScriptを使用して更新およびXMLを更新しようとしているときに実行時エラー91 - Object変数またはWithブロック変数が設定されていない実行時エラー91 - オブジェクト変数またはWithブロック変数が設定されていない - ExcelからXMLを更新する

Sub UpdateXML() 
    Call fnUpdateXMLByTags 
    End Sub 

    Function fnUpdateXMLByTags() 

    Set xmldoc = CreateObject("Microsoft.XMLDOM") 
    xmldoc.Load "F:\XML\XML1.xml" 
    oMsgId = "15544216089S01F15544100002396000002" 
    Set nMsgId = xmldoc.SelectSingleNode("//AcctSwtchBtch/GrpHdr/MsgId") 
    nMsgId.Text = oMsgId 
    strResult = xmldoc.Save("F:\XML\XML1.xml") 

    End Function 
+0

エラーが発生した行はありますか? –

+0

それはラインを強調表示されていません –

+1

あなたはvbaでコーディングしていますか?はいの場合は、scirptを実行して(F8キーを押して)、失敗した場所を教えてください –

答えて

0

関数は何かを返す必要があります。例:

Function FileExists(FilePath As String, FileName As String) As Boolean 

Dim CurrentDir As String 
CurrentDir = CurDir ' Used to set the CurDir back to what it was 

If FilePath <> "" Then ChDir FilePath 

If Dir(FileName) <> "" Then 
    FileExists = True 
Else 
    FileExists = False 
End If 
ChDir CurrentDir 

End Function 

機能からサブに変更することをお勧めします。

Dim xmldoc As Object 
Set xmldoc = CreateObject("Microsoft.XMLDOM") 
... 

私はnMsgId種類について確認していないので、「nMsgId設定」から最後の部分をコメントと::

+0

これはまだdoesntの仕事: サブUPDATEXML() セットXMLDOC =のCreateObject( "Microsoft.XMLDOM") xmldoc.Load "F:\ XML \ XML1.xml" oMsgId = "15544216089S01F15544100002396000002" セットnMsgId = xmldoc.SelectSingleNode( "// AcctSwtchBtch/GrpHdr /のMsgId") 「を設定し、新たな価値 nMsgId.Text = oMsgId strResult = xmldoc.Save( "Fとテキストノード:\ XML \ XML1.xml ") End Sub –

+0

彼らはクエストにタグを付けましたイオンVBScriptはVBAではない。 – Lankymart

0

私はあなたが薄暗いせずに設定していると仮定して

Debug.Print TypeName(xmldoc.SelectSingleNode("//AcctSwtchBtch/GrpHdr/MsgId")) 

正しいタイプのnMsgIdインスタンスを作成できます

+0

それでも同じエラーが発生しました –

+0

VBAではなくVBScriptという質問にタグ付けされています。 – Lankymart

関連する問題