2016-07-28 6 views
0

Ich habe ein VBA-Makro, das meine Daten als XML ausgibt. Ich versuche, einen Weg zu finden, mein Makro zu bearbeiten, um eine Zeile während der Schleife zu überspringen, wenn ein bestimmter Zellenwert "AUS" ist. Da ich nicht gut darin bin, VBA-Code zu schreiben, wollte ich das einfach halten, also schaue ich VBA-Makros nach und tüftle mit ihnen, bis ich das gewünschte Ergebnis bekomme, also entschuldige mich für irgendwelche Fehler, die ich in dem bereitgestellten Code habe. Hier ist das Makro, das ich jetzt habe, aber ich bekomme immer einen Fehlertypfehler. Für jede Zeile des XML habe ich eine Zelle daneben, die entweder auf den "ON" oder "OFF" Wert gesetzt ist. Danke für die Hilfe alle!VBA-Makro, XML zu exportieren, die eine Zeile vermeidet, wenn eine bestimmte Zellen "OFF" -Wert ist

Sub Export_tvXML() 

Dim XMLFileName As String 

Dim MetaFileName1 As String 
Dim MetaFileName2 As String 

Dim output1 As String 
Dim output2 As String 

Dim range1 As Range 
Dim range2 As Range 

Set range1 = Sheets("XML").Range("A2:E84") 
Set range2 = Sheets("XML").Range("A86:E168") 

MetaFileName1 = Sheets("TV_Info").Range("G5") 
MetaFileName2 = Sheets("TV_Info").Range("G6") 


XMLFileName = MetaFileName1 & ".xml" 

For Each r In range1.Rows 
    If Cells(r, 6).Value = 1 Then 
     For Each c In r.Cells 
      output1 = output1 & c.Value 
     Next c 
     output1 = output1 & vbNewLine 
    End If 
Next r 

Open XMLFileName For Output As #1 
Print #1, output1 
Close #1 


XMLFileName = MetaFileName2 & ".xml" 

For Each r In range2.Rows 
    For Each c In r.Cells 
     output2 = output2 & c.Value 
    Next c 
    output2 = output2 & vbNewLine 
Next r 

Open XMLFileName For Output As #2 
Print #2, output2 
Close #2 


End Sub 

Was die Tabelle Seite davon, ich habe XMLs verspottet und das Makro wird der Wert nur ausgegeben, wie es formatiert. Hier ist ein Screenshot zur Referenz. Also jede Zeile, die ausgeschaltet ist, möchte, dass das Makro diese Zeile überspringt und zur nächsten Zeile weitergeht, die es ausgibt.

XML Mockup

+0

Verketten Sie keine XML-Strings als Textdatei. Verwenden Sie die MSXML-Bibliothek, die [DOM-Methoden] verwaltet (https://msdn.microsoft.com/en-us/library/ms757828 (v = vs.85) .aspx): 'createElement()', 'appendChild()' , 'setAttributeNode()' .... – Parfait

Antwort

0

Ich denke, Ihr Problem in der folgenden Zeile ist:

If Cells(r, 6).Value = 1 Then 

Sie testen den Zellenwert gegenüber einer Anzahl (1), aber sie bedeuten gegen einen String-Wert zu testen, die Deshalb erhalten Sie den Typenkonflikt.

versuchen, es zu folgendem Wechsel:

If StrComp(Cells(r, 6).Value,"ON")=0 Then 

StrComp ist eine nützliche Funktion, zwei Strings zu vergleichen, die Optionen enthält den Vergleich Groß- und Kleinschreibung zu machen. In diesem Fall sind die zwei Zeichenfolgen die Inhalte aufeinanderfolgender Zellen in Spalte 6 und die Zeichenfolge "EIN".

Verwandte Themen