| 

.NET C# Java Javascript Exception

1
Ich versuche, über meine Anwendung (VS2010) in Excel den Text in einer Spalte zu teilen! Habe das mittels Makro aufgezeichnet, wo folgendes raus kommt:
Selection.TextToColumns(Destination:=Range("M1"), DataType:="xlDelimited", _
TextQualifier:="xlDoubleQuote", ConsecutiveDelimiter:=False, TAB:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
"T", TrailingMinusNumbers:=True)

Ich schaffe es einfach nicht, dies in VB-Code umzuwandeln, er schreib immer einen Fehler wenn er zur o.a. Anweisung kommt.

Ich habe es auch schon mit Objektzuweisungen versucht und die Werte
(z.B. Destination:= od. TextQualifier:="xlDoubleQuote"
von den Objekten abzuleiten.

Hier der Teil des Codes der geht:
xls_App = New Excel.Application
xls_App.Visible = True
xls_Mappe = xls_App.Workbooks.Add
xls_Blatt = xls_Mappe.Worksheets(1)
xls_Zelle = xls_Blatt.Range("A1")
xls_Blatt.PasteSpecial(Windows.Forms.DataFormats.Text)
xls_Blatt.Select()
xls_App.Selection.NumberFormat = "0"

'Datum-Zeitspalte formatieren
If DatumZeit = True Then
xls_Blatt.Columns("N:N").Select()
xls_App.Cells("1", "O").EntireColumn.Insert()
xls_Blatt.Range("N1").Select()
xls_App.ActiveCell.FormulaR1C1 = "Zeit"
xls_Blatt.Range("M1").Select()
xls_App.ActiveCell.FormulaR1C1 = "Datum"
xls_Blatt.Columns("M:M").Select()
Jetzt sollte die o.a. Anweisung "Text in Spalten" kommen, aber das brin ich nicht hin!

Kann mir jemand schnell helfen bitte?!

LG WO
News:
27.04.2012
superfelix27 1 1 1
4 Antworten
0
kannst du den Fehler genauer beschreiben? Was mir auf Anhieb dazu einfällt ist, dass sich vielleicht selektierte Bereiche in Excel überlappen.

Gruß
Klaus
28.04.2012
luedi 2,2k 1 9
Hallo
Ich habe das hier mal versucht:
xls_App.Selection.TextToColumns(Destination:=xls_Blatt.Range("M1"), DataType:="xlDelimited", _
TextQualifier:="xlDoubleQuote", ConsecutiveDelimiter:=False, TAB:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
"T", TrailingMinusNumbers:=True)
Kommt aber der Fehler, dass das TextToColumns nicht ausgeführt werden kann!
Wenn ich Range, Destination und Datatype weg nehme dann zeigt er keinen Fehler macht aber in Excel auch nichts!!

LG
superfelix27 28.04.2012
Sorry,
das alles muss ich weg nehmen
Destination:=xls_Blatt.Range("M1"), DataType:="xlDelimited", _
TextQualifier:="xlDoubleQuote", ConsecutiveDelimiter:=False
Das es keine Fehlermeldung gibt, aber in Excel passiert auch nichts, also das "Text in Spalten" wird nicht ausgeführt!!

LG
superfelix27 28.04.2012
0
Hier mal der gesamte Code, dabei sieht man auch den auskommentierten Coede, so habe ich es auch schon versucht, geht aber auch nicht:

Dim dtMem As New DataTable
Dim xls_App As New Excel.Application
Dim xls_Mappe As Excel.Workbook
Dim xls_Blatt As Excel.Worksheet
Dim xls_Zelle As Excel.Range

'Füllen der Daten vom Datagridview in DataTable


daten.SelectAll()
daten.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
Clipboard.SetDataObject(daten.GetClipboardContent())
'Starten von Excel
'xls_App = CreateObject("Excel.Application")
xls_App = New Excel.Application
xls_App.Visible = True
xls_Mappe = xls_App.Workbooks.Add
xls_Blatt = xls_Mappe.Worksheets(1)
xls_Zelle = xls_Blatt.Range("A1")
xls_Blatt.PasteSpecial(Windows.Forms.DataFormats.Text)
xls_Blatt.Select()
xls_App.Selection.NumberFormat = "0"

'Datum-Zeitspalte formatieren
If DatumZeit = True Then
xls_Blatt.Columns("N:N").Select()
xls_App.Cells("1", "O").EntireColumn.Insert()
xls_Blatt.Range("N1").Select()
xls_App.ActiveCell.FormulaR1C1 = "Zeit"
xls_Blatt.Range("M1").Select()
xls_App.ActiveCell.FormulaR1C1 = "Datum"
xls_Blatt.Columns("M:M").Select()

xls_App.Selection.TextToColumns(Destination:=xls_Blatt.Range("M1"), DataType:="xlDelimited", _
TextQualifier:="xlDoubleQuote", ConsecutiveDelimiter:=False, TAB:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
"T", TrailingMinusNumbers:=True)



''xls_Blatt.TextQualifier = "xlDoubleQuote"
'xls_Blatt.ConsecutiveDelimiter = False
'xls_Blatt.Tab = False
'xls_Blatt.Semicolon = False
'xls_Blatt.Comma = True
'xls_Blatt.Space = False
'xls_Blatt.Other = True
'xls_Blatt.OtherChar = "T"
'xls_Blatt.TrailingMinusNumbers = True
'xls_Blatt.Selection.NumberFormat = "m/d/yyyy"




End If

Vielleicht hat jemand eine Idee?!


LG WO
28.04.2012
superfelix27 1 1 1
0
Folgender Code läuft wenigstens ohne Exception durch (hab es allerdings nur mit einem leeren Excel-Sheet probiert):

xls_Blatt.Range("M:M").TextToColumns(Destination:=xls_Blatt.Range("M1"), DataType:=XlTextParsingType.xlDelimited, _
TextQualifier:=XlTextQualifier.xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
"T", TrailingMinusNumbers:=True)


Ich habe mich auch mal auf MSDN umgeschaut, was es zum Thema so gibt (MSDN-Suche).

Dort habe ich einen Knowledgebase-Artikel gefunden (KB214261), der mich stutzig gemacht hat. Wenn du die Daten aus dem DataGridview in die Spalte "A1" des Excel-Sheet einfügst solltest du die Methode TextToColumns auch auf die Range "A:A" ausführen.
29.04.2012
luedi 2,2k 1 9
0
Hallo

Danke dir, hat super funtioniert!

So sieht es jetzt aus

xls_Blatt.Range("N:N").TextToColumns(Destination:=xls_Blatt.Range("N1"), DataType:=Excel.XlTextParsingType.xlDelimited, TextQualifier:=Excel.XlTextQualifier.xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="T", TrailingMinusNumbers:=True)


DANKE noch mal

WO
02.05.2012
superfelix27 1 1 1

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH