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, 4854 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
VB for Applications
gelöst VBA Skript funktioniert auf lokalen Zugriff, aber nicht auf Netzwerkshare (1)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

Microsoft Office
gelöst Excel Tabellen Vergleich (1)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

Microsoft Office
Alle CSV-Dateien mit neuem Datum in einem Ordner mit einem VBA Makro einlesen (1)

Frage von parlermo2102 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...