Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
336to340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
336to340
336to340
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Unterschied Application.FindFile <=> Öffnen-Dialog

Unterschied Application.FindFile <=> Öffnen-Dialog
18.11.2003 17:25:03
MarcusK
Hallo zusammen,

ich benutze ein VBA-Makro, in dem mit Application.FindFile eine Datei (txt-Format mit TAB als Trennzeichen) geöffnet wird. Aus der geöffneten Datei werden Spalten kopiert und in das aktive Sheet eingefügt.
Problem: die Zahlenkonvertierung stimmt nicht. Steht im TXT-File z.B. 1600,123 dann wird dies als 1.600.123 im neuen Sheet (also das, das über den FindFile-Dialog neu geöffnet wurde) angezeigt. Das nachfolgende Copy'n'Paste trägt diese Werte dann natürlich auch falsch ins aktive Sheet ein.
Wenn ich die TXT-Datei dagegen ganz normal über den Datei Öffnen-Dialog öffne, stimmen die Werte!
Woran kann das liegen? Ich hab mit Formatierungen, festen Dez.stellen etc. rumprobiert, aber alles ohne Erfolg.
Anbei ein paar Werte (erste Spalte) und dahinter die Werte, wie sie dann (z.T. falsch) im Excel-Sheet stehen:

840 ==> 840
1600 ==> 1600
840,1 ==> 840,1
1600,1 ==> 1600,1
840,12 ==> 840,12
1600,12 ==> 1600,12
840,123 ==> 840.123 !!!Fehler!!!
1600,123 ==> 1.600.123 !!!Fehler!!!
0 ==> 0
2 ==> 2
0,1 ==> 0,1
2,1 ==> 2,1
0,01 ==> 0,01
2,01 ==> 2,01
0,001 ==> 0,001
2,001 ==> 2.001 !!!Fehler!!!

Alle Werte in der Spalte 'falsch', die Kommata haben, werden links ausgerichtet, die anderen rechts. Interessant ist der Unterschied zwischen 0,001 (wird richtig interpretiert) und 2,001 (wird zu 2.001); analog 840,123 (wird zu 840.123) und 1600,123 (wird zu 1.600.123).

Für Hilfe wäre ich dankbar, da ich das Makro dringend brauche. Habe hier im Forum und im Web leider auch nichts entsprechendes gefunden.

Gruß,
Marcus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Leidiges Excel 97 Problem ...
18.11.2003 18:23:36
Volker Croll
Hallo Marcus,

es ist in der Urversion von Excel 97 so, das das Makro (bei Aufruf aus dem Programmtext) die US-Version benutzt, die das Komma als Dezimalkennzeichen nicht kennt. Dort ist das Komma das Tausenderkennzeichen und der Punkt das Dezimalkennzeichen.

Beim Handbetrieb wird die deutsche .dll benutzt, deshalb da kein Problem.

Folgende Loesungen sind moeglich:

Entweder Office/Excel-97-Service-Release-1 und -2 installieren; dauert allerdings etwas laenger.

Dazu Office-97-SR1 und -SR2 bei Microsoft downloden (sind aber recht gross) oder die Microsoft Jahr 2000 CD raussuchen, da ist's auch drauf.

Oder wenn man unabhaengig davon sein moechte, welche Excel 97 Version beim Anwender laeuft:

- Kommas durch Punkt ersetzen.

- Fuer die Spalten, in denen die "Text"-Zahlen stehen, Hilfsspalten einfuegen und dort jeden Wert mit 1 multiplizieren, z.B. Formel für B1: =A1*1 , dann mit B1 weiterrechnen (geht selbst bei mehreren tausend Zahlen recht schnell)

Gruss Volker
Anzeige
AW: Unterschied Application.FindFile <=> Öffnen-Dialog
18.11.2003 18:24:58
Nepumuk
Hallo Marcus,
schon mal mit der GetOpenFilename-Methode versucht? Würde mich interessieren, Ob es da einen Unterschied gibt. Folgendes könntest du auch noch versuchen. Da musst du aber noch den Dateifilter auf txt - Dateien anpassen.


Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetFileNameFromBrowseW Lib "shell32" Alias "#63" (ByVal hwndOwner As Long, ByVal lpstrFile As Long, ByVal nMaxFile As Long, ByVal lpstrInitialDir As Long, ByVal lpstrDefExt As Long, ByVal lpstrFilter As Long, ByVal lpstrTitle As Long) As Long
Private Declare Function GetFileNameFromBrowseA Lib "shell32" Alias "#63" (ByVal hwndOwner As Long, ByVal lpstrFile As String, ByVal nMaxFile As Long, ByVal lpstrInitialDir As String, ByVal lpstrDefExt As String, ByVal lpstrFilter As String, ByVal lpstrTitle As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Sub start()
Dim sSave As String
sSave = Space(255)
If IsWinNT Then
GetFileNameFromBrowseW FindWindow("xlmain", vbNullString), StrPtr(sSave), 255, StrPtr(CurDir), StrPtr("xls"), StrPtr("Excel files (*.xls)" + Chr$(0) + "*.xls" + Chr$(0) + "All files (*.*)" + Chr$(0) + "*.*" + Chr$(0)), StrPtr("Öffnen")
Else
GetFileNameFromBrowseA FindWindow("xlmain", vbNullString), sSave, 255, CurDir, "xls", "Excel files (*.xls)" + Chr$(0) + "*.xls" + Chr$(0) + "All files (*.*)" + Chr$(0) + "*.*" + Chr$(0), "Öffnen"
End If
sSave = Trim(sSave)
sSave = Mid(sSave, 1, Len(sSave) - 1)
MsgBox sSave
End Sub
Private Function IsWinNT() As Boolean
Dim myOS As OSVERSIONINFO
myOS.dwOSVersionInfoSize = Len(myOS)
GetVersionEx myOS
IsWinNT = (myOS.dwPlatformId = 2)
End Function



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Unterschied Application.FindFile <=> Öffnen-Dialog
18.11.2003 18:38:13
MarcusK
Hallo Volker und Nepumuk,

danke für die schnellen und ausführlichen Antworten. Ich werde das Ganze morgen testen - sofern nicht was anderes dazwischenkommt.
Über Erfolg oder Nichterfolg werde ich wieder posten.
Bis dann und nochmal danke.

Ciao,
Marcus
AW: Unterschied Application.FindFile <=> Öffnen-Dialog
21.11.2003 10:04:21
MarcusK
Hallo zusammen,

hat eine Weile gedauert, bis ich die Vorschläge testen konnte.
Also:
1. SR2 war schon installiert. Das Problem besteht also trotz SR2
2. Kommas durch Punkte ersetzen bringt leider auch nicht die Lösung. "840,123" und "840.123" werden immer als "840.123" interpretiert.
3. Die Idee mit der "GetOpenFilename-Methode" hört sich gut an. Leider bin ich wie gesagt absoluter VBA-Novize. Daher komme ich da auch nicht weiter.

Ich werde jetzt weiter rumprobieren und die eingelesenen Werte bis zu einer Lösung von Hand korrigieren (stöhn).
Danke jedenfalls für Eure Hilfe.

Gruß,
Marcus

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige