Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Vba skript zum einlesen von textdateien in excel tabellen

Frage Entwicklung VB for Applications

Mitglied: dedalus2011

dedalus2011 (Level 1) - Jetzt verbinden

15.04.2012, aktualisiert 19:15 Uhr, 4882 Aufrufe, 5 Kommentare

Hallo,

es sollen mehrere Zahlen aus einer textdatei in einer excel tabelle eingefügt werden. es klappt soweit, dass alle zahlen (mit tausendtrennzeichen oder kommatrennzeichen) korrekt in der tabelle geschrieben werden, bis auf einem bestimmten zahlenformat. Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind werden beim einfügen in der entsprechenden zelle automatisch umgewandelt (z.B. 3,0195 -> 301.950 )

In vba skript habe ich folgendes probiert:

1)
01.
 wksZ.Cells(Cell1+ 2, Cell2 + 1).Value =Replace(3,0195, "0,", "0.", 1, 1, 2) 
2)
01.
 For Each xCell In Selection 
02.
       xCell.Value = xCell.Value 
03.
    Next xCell 
3)
01.
  Cells.NumberFormat = "" 
Klappt aber nicht

Für alle anderen Zahlenformate schon (0 gefolgt von einer komma, 2 oder mehrere Zahlen gefolgt von einer komma etc).

Mit folgendem Ausdruck konnte ich die Zeilen identifizieren, die automatisch konvertiert werden

01.
 if RegexContains(Array(Values), "^([1-9])(,)") = True Then  
02.
wksZ.Cells(Cell1+ 2, Cell2 + 1).Value = " ' " + Array(Values) 
- hier werden die Zahlen zunächst im stringformat in der excel tabelle importiert

Habe dann mit

01.
 For Each xCell In Selection 
02.
       xCell.Value = xCell.Value 
03.
    Next xCell 
probiert, um die Strings wieder in Zahlenformat zu konvertieren, die Strings werden aber dann wieder falsch formatiert (z.B. 3,0195 -> 301.950 )

Freue mich über jeden Hinweis

Grüße
dedalus2011
Mitglied: mak-xxl
15.04.2012 um 19:24 Uhr
Moin dedalus2011,

Zitat von dedalus2011:
... Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind [...] automatisch umgewandelt (z.B. 3,0195 -> 301.950 )
01.
 wksZ.Cells(Cell1+ 2, Cell2 + 1).Value =Replace(3,0195, "0,", "0.", 1, 1, 2) 

In der Zeile, wo der String eingelesen wird, der angenommen in der Variable 'strToken' steht, dann passiert das bei Dir etwa so:

wksZ.Cells(Zeile, Spalte).Value = strToken          ' das Einlesen eines Strings
Das müsste geändert werden in:

wksZ.Cells(Zeile, Spalte).Value = CDbl(strToken)    ' das Einlesen eines in ein Zahlenformat gewandelten Strings
Der Typ der Wandlung ist Dir freigestellt (siehe VBA-Hilfe). Nachträgliches Ändern bringt da aber wenig (wenn also das Kind schon in den Brunnen gebrochen ...)

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: dedalus2011
15.04.2012 um 19:56 Uhr
Moin mak-xxl,

klappt leider nicht..Gibt die ganze Zahl raus (in dem Fall wäre das eine "3" statt "3,0195") . Habe auch CDbl(" ' " & (Array(Values)) probiert. Dann kommt der "Type mismatch Error". und ich habe das gleiche Problem wie früher..

Grüße

dedalus2011
Bitte warten ..
Mitglied: mak-xxl
15.04.2012 um 20:03 Uhr
Moin dedalus2011,

um das Problem einzukreisen, versuche vor dem Einlesen ein

MsgBox CDbl(strToken)
Wenn hier auch ein Fehler erzeugt wird, dann poste bitte den Inhalt der Variable in diesem Moment.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: dedalus2011
15.04.2012 um 20:11 Uhr
Moin mak-xxl,

kommt 3,01950 raus. D.h. der Wert wird in der Tabellenzelle umgewandelt (3,01950 -> 3), wie oben beschrieben.

Grüße

dedalus2011
Bitte warten ..
Mitglied: mak-xxl
15.04.2012 um 20:20 Uhr
Zitat von dedalus2011:
kommt 3,01950 raus. D.h. der Wert wird in der Tabellenzelle umgewandelt (3,01950 -> 3), wie oben beschrieben.

Du schriebst erst, da käme ein Fehler - ja, bei dem Array-Konstrukt mit vorgeschaltetem Hochkomma ...

Die soeben beschriebene 'Umwandlung' rührt daher, dass die Zelle das falsche Format hat (evtl. Ganzzahl) - hier solltest Du entsprechend formatieren.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (14)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...

Viren und Trojaner
Wie werde ich den Mist "fanli90" wieder los? (12)

Frage von Taumel zum Thema Viren und Trojaner ...