分類:[VB.NET/VB2005 以降]
2011/03/09(Wed) 18:10:41 編集(投稿者)
■57690 の続きとして、今度はリボンの表示状態を取得しようとしています。
LINQで取得した文字列の比較を行いましたが、VSのデバック上やDebug.WriteLine上は全く同じ文字列に
見えるのですがなぜか判定がNGになります。
特に特殊文字等は入っていないと思うのですが何かコードに不備があるのでしょうか?
どなたか教えていただけないでしょうか?
また、文字列を抽出するLINQのコードですが、もっと良いやり方があるとおもうのですが
こちらも合わせて教えていただけないでしょうか?
よろしくお願いします。
書いたコード
Dim mso As XNamespace = "http://schemas.microsoft.com/office/2009/07/customui"
Dim q = From x In XDocument.Load(filePath).Descendants(mso + "tab")
Where x.@insertBeforeQ = "mso:TabInsert"
Dim tempVal As String = TryCast(q.@label, String)
If not tempVal Is Nothing AndAlso "操作" = tempVal Then 'ここで判定NGになります。
'CompareToで確認したところLinqで取得したほうが大きいです。
Dim r = From y In q.Descendants(mso + "group") 'ここのコードはもっとスマートにできると思うのですが・・・・
tempVal = TryCast(r.@label, String)
If Not tempVal Is Nothing AndAlso "新しいグループ"= tempVal Then
Dim s = From z In r.Descendants(mso + "control")
tempVal = TryCast(s.@visible, String)'文字列判定のIf文をコメントアウトすればここでVisibleの値が取れる
If Not tempVal Is Nothing AndAlso CBool(visible) = tempVal Then
result = True
End If
End If
End If
参照先のXML(Excel.officeUI)
<mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
<mso:ribbon>
<mso:qat>
<mso:sharedControls>
<mso:control idQ="mso:FileOpen" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:FileSave" visible="true" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:FileSendAsAttachment" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:FilePrintQuick" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:PrintPreviewAndPrint" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:Spelling" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:Undo" visible="true" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:Redo" visible="true" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:SortAscendingExcel" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:SortDescendingExcel" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:FileOpenRecentFile" visible="false" insertBeforeQ="mso:FileNewDefault"/>
<mso:control idQ="mso:FileNewDefault" visible="true"/>
</mso:sharedControls>
</mso:qat>
<mso:tabs>
<mso:tab id="mso_c1.42DBAF3" label="操作" insertBeforeQ="mso:TabInsert">
<mso:group id="mso_c2.42DBAF3" label="新しいグループ" autoScale="true">
<mso:control idQ="mso:Copy" visible="true"/>'ここまでの階層が正しく かつ アトリビュートが取得したいのですが
</mso:group>
</mso:tab>
</mso:tabs>
</mso:ribbon>
</mso:customUI></pre></pre></pre></pre>