Hallo NG,
ich habe ein Problem mit einem per VBA durchgeführten Paste von Text.
Wenn ich als zu kopierenden Text etwa folgendes habe: (aus Textdatei,
Tab-Getrennt):
Hallo 100,231 200,456
Hallo2 200,231 400,456
und füge das manuell mit STRG-V in eine Tabelle ein, so funktioniert es.
Wenn ich aber denselben Text in der Zwischenablage habe, und es per VBA
folgendermaßen einfüge:
sub einfuegen()
Activesheet.Paste
end sub
so werden mir die Zahlen zerschossen:
Hallo 100.231 200.456
Hallo2 200.231 400.456
(die Punkte sind Tausendertrennzeichen, die Zahl ist 100231). PasteSpecial
funktioniert nicht, ich vermute, da in der Zwischenablage nur das Textformat
ist, und nicht das spezielle Excel-Format!? Übrigens geht es auch nicht,
wenn ich das Hallo weglasse ;-)
Hoffe mir kann dabei jemand helfen
mfg
Matthias Fellbrich
"Matthias Fellbrich" <m...@thyssenfahrtreppen.co> schrieb:
bei mir klappt das einwandfrei:
Tab1 A1=Hallo 100,231 200,456
Tab2 A2=Hallo2 200,231 400,456
(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)
A1 und A2 in die Zwischenablage kopiert, Tabelle 2 gewählt und Deinen
Code ausgeführt. Ausgabe wie Original mit Kommata.
--
Gruß Eberhard
XL 2000
> ich habe ein Problem mit einem per VBA durchgeführten Paste von Text.
> Wenn ich als zu kopierenden Text etwa folgendes habe: (aus Textdatei,
> Tab-Getrennt):
>
> Hallo 100,231 200,456
> Hallo2 200,231 400,456
>
> und füge das manuell mit STRG-V in eine Tabelle ein, so funktioniert
> es. Wenn ich aber denselben Text in der Zwischenablage habe, und es
> per VBA folgendermaßen einfüge:
>
> sub einfuegen()
> Activesheet.Paste
> end sub
>
> so werden mir die Zahlen zerschossen:
>
> Hallo 100.231 200.456
> Hallo2 200.231 400.456
>
> (die Punkte sind Tausendertrennzeichen, die Zahl ist 100231).
> PasteSpecial funktioniert nicht, ich vermute, da in der
> Zwischenablage nur das Textformat ist, und nicht das spezielle
> Excel-Format!? Übrigens geht es auch nicht, wenn ich das Hallo
> weglasse ;-)
Das Problem ist IMHO, dass VBA die Zwischenablage als US-Format interpretiert, aber im deutschen Format in XL einfügt.
Im US-Format ist das "," ein Tausendertrennzeichen, der "." das Trennzeichen für "Nach'komma'stellen". Fügt also VBA einen als Zahl
interpretierbaren Wert in eine als "Standard" (und somit auch potentiell als Zahl) formatierte Zelle ein, wird "." durch "," ersetzt
und umgekehrt.
Der nachfolgende Code umgeht dieses Problem, indem er die Zwischenablage zunächst als _Text_ in ein Dummy-Sheet einfügt, und
anschließend die eingefügten Daten als Werte in das ursprüngliche ActiveSheet kopiert.
Probier's mal aus:
Sub test()
Dim vActiveSheet As String
Dim vDummySheet As Worksheet
'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
'aktuelles Sheet merken
vActiveSheet = ActiveSheet.Name
'Dummy-Sheet erstellen
Set vDummySheet = ThisWorkbook.Sheets.Add
'Zellen als Text formatieren
vDummySheet.Cells.NumberFormat = "@"
'Zwischenablage einfügen
vDummySheet.Paste
'eingefügte Werte kopieren
Selection.Copy
'ursprüngliches Sheet wieder aktivieren
Worksheets(vActiveSheet).Select
'Werte einfügen
Selection.PasteSpecial Paste:=xlValues
'Warnungen ausschalten
Application.DisplayAlerts = False
'Dummy-Sheet löschen
vDummySheet.Delete
'Warnungen wieder einschalten
Application.DisplayAlerts = False
'Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = False
End Sub
Hoffe, ich konnte Dir helfen.
Schönen Gruß
--
Michael
michael....@gmx.de
erstmal Danke für die Antwort,
> bei mir klappt das einwandfrei:
>
> Tab1 A1=Hallo 100,231 200,456
> Tab2 A2=Hallo2 200,231 400,456
>(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)
in der News selber sind keine Tabs mehr vorhanden, und die Zeile wurde bei
dir am Stück in die erste Zelle kopiert. Wenn du z.B. in Notepad eine solche
Zeile erstellst, und dann Tabs dazwischen machst, und *das* dann so
kopierst, wie ich das beschrieben habe, müsste der Effekt auch auftreten....
Werde mir aber die Lösung von Michael erstmal anschauen, vielleicht klappt
das schon.
mfg
Matthias Fellbrich
vielen Dank für die Erklärung und deine Lösung, die auch funktioniert ;-)
> Das Problem ist IMHO, dass VBA die Zwischenablage als US-Format
interpretiert, aber im deutschen Format in XL einfügt.
so eine Ahnung hatte ich auch schon, war mir aber nicht sicher, warum VBA
ein anderes Verhalten zeigt als das manuelle Einfügen. Da ich die Textdatei
auch selber erstelle, werde ich nochmal versuchen, diese mit Punkten als
Dezimalzeichen zu erstellen anstatt mit Kommas. Vielleicht klappt das auch.
mfg
Matthias Fellbrich
das klappt.
Ich kann nur hoffen, das Microsoft dieses unterschiedliche Verhalten bei
zukünftigen Versionen beibehält ;-)
mfg
Matthias Fellbrich
"Matthias Fellbrich" <m...@thyssenfahrtreppen.co> schrieb:
[....]
>> Tab1 A1=Hallo 100,231 200,456
>> Tab2 A2=Hallo2 200,231 400,456
>>(Beides habe ich aus meinem Newsreader direkt in die Tabelle kopiert.)
>
>in der News selber sind keine Tabs mehr vorhanden, und die Zeile wurde bei
>dir am Stück in die erste Zelle kopiert. Wenn du z.B. in Notepad eine solche
>Zeile erstellst, und dann Tabs dazwischen machst, und *das* dann so
>kopierst, wie ich das beschrieben habe, müsste der Effekt auch auftreten....
Ich wollte mal probieren, ob das von Dir beobachtete Phänomen mit
PasteSpecial(xlValues) auch auftritt. Leider kriege ich keinen mit
Tabs getrennten Text in EINE Zelle.
Ich habe die Texte mit Tabs in Word, Editor und in WordPad eingegeben.
Beim Kopieren nach A1 teilt Excel jedes mal in vorauseilendem Gehorsam
die Texte nach A1:C1 auf. Wie kann man die automatische "Text in
Spalten" Konversion ausschalten? Unter Extras|Optionen und in der
Hilfe habe ich nichts gefunden.
> Ich wollte mal probieren, ob das von Dir beobachtete Phänomen mit
> PasteSpecial(xlValues) auch auftritt. Leider kriege ich keinen mit
> Tabs getrennten Text in EINE Zelle.
von Hand geht das, wenn man in eine Zelle mit Doppelklick zum bearbeiten
reinklickt, und dann Strg-V.
> die Texte nach A1:C1 auf. Wie kann man die automatische "Text in
> Spalten" Konversion ausschalten? Unter Extras|Optionen und in der
> Hilfe habe ich nichts gefunden.
dazu habe ich leider auch nichts gefunden. Ich weiß nicht genau was du
gerade vorhast, aber das Aufteilen des Textes in die verschiedenen Spalten
war durchaus mein Ziel, sonst hätte ich ja auch keine Tabs benutzt ;-)
mfg
Matthias Fellbrich
[.......]
>... aber das Aufteilen des Textes in die verschiedenen Spalten
>war durchaus mein Ziel, sonst hätte ich ja auch keine Tabs benutzt ;-)
das ging für mich aus Deinem Post nicht hervor, daher das
Mißverständnis.