excel 2010 vba更新xml文件时出错

excel 2010 vba更新xml文件时出错,xml,excel,vba,Xml,Excel,Vba,我正在尝试运行并修复下面的excel 2010 vba,并在set imgNode=oXMLFile.DocumentElement.SelectNodes(“/Batch/Entry/Image”)上获取一个对象变量或未设置块变量。我肯定还有其他不正确的地方,但这似乎是第一件事。我为这篇冗长的帖子道歉,只是想包括所有的细节。谢谢:) VB Private Sub CommandButton3_Click() Dim MyBarCode As String ' Enter Bar

我正在尝试运行并修复下面的
excel 2010 vba
,并在
set imgNode=oXMLFile.DocumentElement.SelectNodes(“/Batch/Entry/Image”)
上获取一个
对象变量或未设置块变量。我肯定还有其他不正确的地方,但这似乎是第一件事。我为这篇冗长的帖子道歉,只是想包括所有的细节。谢谢:)

VB

Private Sub CommandButton3_Click()

Dim MyBarCode   As String      ' Enter Barcode
Dim MyScan      As String      ' Enter ScanDate
Dim MyDirectory As String

MyBarCode = Application.InputBox("Please enter the last 5 digits of the barcode", "Bar Code", Type:=2)

If MyBarCode = "False" Then Exit Sub   'user canceled
Do
    MyScan = Application.InputBox("Please enter scan date", "Scan Date", Date, Type:=2)
    If MyScan = "False" Then Exit Sub   'user canceled
    If IsDate(MyScan) Then Exit Do
    MsgBox "Please enter a valid date format. ", vbExclamation, "Invalid Date Entry"
Loop

'Create nexus directory and folder
MyDirectory = "N:\1_DATA\MicroArray\NexusData\" & "2571683" & MyBarCode & "_" & Format(CDate(MyScan), "m-d-yyyy") & "\"
If Dir(MyDirectory, vbDirectory) = "" Then MkDir MyDirectory

'Write to text file
    Open MyDirectory & "sample_descriptor.txt" For Output As #1
    Print #1, "Experiment Sample" & vbTab & "Control Sample" & vbTab & "Display Name" & vbTab & "Gender" & vbTab & "Control Gender" & vbTab & "Spikein" & vbTab & "SpikeIn Location" & vbTab & "Barcode"
    Print #1, "2571683" & MyBarCode & "_532Block1.txt" & vbTab & "2571683" & MyBarCode & "_635Block1.txt" & vbTab & ActiveSheet.Range("B8").Value & " " & ActiveSheet.Range("B9").Value & vbTab & ActiveSheet.Range("B10").Value & vbTab & ActiveSheet.Range("B5").Value & vbTab & ActiveSheet.Range("B11").Value & vbTab & ActiveSheet.Range("B12").Value & vbTab & "2571683" & MyBarCode
    Print #1, "2571683" & MyBarCode & "_532Block2.txt" & vbTab & "2571683" & MyBarCode & "_635Block2.txt" & vbTab & ActiveSheet.Range("C8").Value & " " & ActiveSheet.Range("C9").Value & vbTab & ActiveSheet.Range("C10").Value & vbTab & ActiveSheet.Range("C5").Value & vbTab & ActiveSheet.Range("C11").Value & vbTab & ActiveSheet.Range("C12").Value & vbTab & "2571683" & MyBarCode
    Print #1, "2571683" & MyBarCode & "_532Block3.txt" & vbTab & "2571683" & MyBarCode & "_635Block3.txt" & vbTab & ActiveSheet.Range("D8").Value & " " & ActiveSheet.Range("D9").Value & vbTab & ActiveSheet.Range("D10").Value & vbTab & ActiveSheet.Range("D5").Value & vbTab & ActiveSheet.Range("D11").Value & vbTab & ActiveSheet.Range("D12").Value & vbTab & "2571683" & MyBarCode
    Print #1, "2571683" & MyBarCode & "_532Block4.txt" & vbTab & "2571683" & MyBarCode & "_635Block4.txt" & vbTab & ActiveSheet.Range("E8").Value & " " & ActiveSheet.Range("E9").Value & vbTab & ActiveSheet.Range("E10").Value & vbTab & ActiveSheet.Range("E5").Value & vbTab & ActiveSheet.Range("E11").Value & vbTab & ActiveSheet.Range("E12").Value & vbTab & "2571683" & MyBarCode
    Close #1

' ADD VBA REFERENCE: MICROSOFT XML, v3.0 or v6.0 '
Dim oXMLFile As New MSXML2.DOMDocument
Dim imgNode As MSXML2.IXMLDOMNodeList, destNode As MSXML2.IXMLDOMNodeList
Dim XML­File­Name As String

XML­File­Name = MyDirectory & "C:\Users\cmccabe\Desktop\EmArray\Design\imagene.bch"
oXMLFile.Load (XML­File­Name)

' EXTRACT NODES INTO LIST AND REWRITE NODES '
Set imgNode = oXMLFile.DocumentElement.SelectNodes("/Batch/Entry/Image")
imgNode(0).Text = "I:\" & MyBarCode & "_532"
imgNode(1).Text = "I:\" & MyBarCode & "_635"

Set destNode = oXMLFile.DocumentElement.SelectNodes("/Batch/Entry/Destination")
destNode(0).Text = MyDirectory & MyBarCode & "_" & Format(CDate(MyScan), "m-d-yyyy")
destNode(1).Text = MyDirectory & MyBarCode & "_" & Format(CDate(MyScan), "m-d-yyyy")

' SAVE UPDATED XML '
oXMLFile.Save XML­File­Name


' UNINTIALIZE OBJECTS '
Set imgNode = Nothing
Set destNode = Nothing
Set oXMLFile = Nothing

MsgBox ("ImaGene is running, please wait")

' CALL JAVA PROGRAM USING SHELL '
Shell """C:\Program Files\BioDiscovery\ImaGene 9.0\ImaGene.exe"" -batch " _
          & XML­File­Name, vbNormalFocus

'Update perl values
MyCombine = "2571683" & MyDirectory & MyBarCode & "_" & Format(CDate(MyScan), "m-d-yyyy")

'Execute perl
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1

wsh.Run "C:\Users\cmccabe\Desktop\spikein.bat MyCombine", windowStyle, waitOnReturn

'Close and Exit
    Application.DisplayAlerts = False
    Application.Quit

End Sub
要更新的XML文件

<?xml version="1.0" encoding="UTF-8"?>

<Batch>
<Entry>
<Image>I:\257168310011_532.tif</Image>
  <Template>C:\Users\cmccabe\Desktop\071683\LC_106Genes_071683_D_20141205.gal</Template>
 <Configuration>C:\Users\cmccabe\Desktop\EmArray\Design\Exon_Array_Parameters.xml </Configuration>
 <Destination>N:\1_DATA\MicroArray\NexusData\12345_11-19-2015</Destination>
 <Channel>0</Channel>
 <ChannelName></ChannelName>
 <SubstituteGridImage>null</SubstituteGridImage>
 <SubstituteGridChannel>0</SubstituteGridChannel>
 <AdjustGrid>true</AdjustGrid>
 <AdjustSpots>true</AdjustSpots>
 <AlignImages>true</AlignImages>
 <Normalize>false</Normalize>
 <Analyze>false</Analyze>
 </Entry>
 <Entry>
 <Image>I:\257168310011_635.tif</Image>
 <Template>C:\Users\cmccabe\Desktop\071683\LC_106Genes_071683_D_20141205.gal</Template>
   <Configuration>C:\Users\cmccabe\Desktop\EmArray\Design\Exon_Array_Parameters.xml </Configuration>
<Destination>N:\1_DATA\MicroArray\NexusData\12345_11-19-2015</Destination>
<Channel>0</Channel>
<ChannelName></ChannelName>
<SubstituteGridImage>null</SubstituteGridImage>
<SubstituteGridChannel>0</SubstituteGridChannel>
<AdjustGrid>true</AdjustGrid>
<AdjustSpots>true</AdjustSpots>
<AlignImages>true</AlignImages>
<Normalize>false</Normalize>
<Analyze>false</Analyze>

I:\257168310011_532.tif
C:\Users\cmccabe\Desktop\071683\LC\u 106Genes\u 071683\u D\u 20141205.gal
C:\Users\cmccabe\Desktop\EmArray\Design\Exon\u Array\u Parameters.xml
N:\1\u数据\微阵列\NexusData\12345\u 11-19-2015
0
无效的
0
真的
真的
真的
假的
假的
I:\257168310011_635.tif
C:\Users\cmccabe\Desktop\071683\LC\u 106Genes\u 071683\u D\u 20141205.gal
C:\Users\cmccabe\Desktop\EmArray\Design\Exon\u Array\u Parameters.xml
N:\1\u数据\微阵列\NexusData\12345\u 11-19-2015
0
无效的
0
真的
真的
真的
假的
假的

在调用
oXMLFile.Load(XML-File-Name)
之后,您可以检查
oXMLFile.parseError.errorCode
吗?我怀疑您没有加载格式良好的文档,因此没有documentElement。@Martin Honnen我收到一个
属性使用无效的
错误。谢谢:)。你是对的,我没有调用正确的文件。。。我看到了错误。谢谢:)。