Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe Kompatibilitätsproblem

Hilfe Kompatibilitätsproblem
11.08.2008 15:48:30
christian
Hallo liebe Excel Gemeinde,
ich habe leider immer noch das Kompatibilitätsproblem!
Zum Verständnis nochmal die Anforderungen an den Code:
Importieren aller in einem Ordner befindlichen Textdateien (Messwerte) in neue Tabellenblätter
Das funktioniert auch alles super, da hat Rudi ganze Arbeit geleistet!
Jetzt brauche ich das aber noch bei mir zu Hause! Und ich verzweifle bald!
Inzwischen ist die Situation so:
Auf Excel 2002 SP3 läuft alles super (auf Arbeit),
auf 2000 läufts überhaupt nicht (den Filedialog gibt es es erst ab Excel 2002! das hat man mir schon erklärt!)
auf 2003 und XP importiert er die Werte, schreibt aber kein einziges Komma. Somit habe ich dann zB keine 32 Newton sondern 320000 Newton.
Das ist nicht gut!
Vielleicht hat da jemand eine Idee, ich bin für jeden Tipp überaus dankbar!
Hier noch der Code:

Sub importTextFile()
'erweitert: Rudi Maintaire; 20080610
Dim lngIndex As Long, lngCnt As Long, intC As Integer
Dim strFile As String, strTmp As String, varValues() As Variant, varTmp As Variant
Dim strFolder As String, wks As Worksheet
Dim strSheetName As String
With Application.FileDialog(4)
.AllowMultiSelect = False
.InitialFileName = "G:\_EG-82(Werkstoffe)\A_METALL\Diplomarbeiten\DA-Heuer\Messergebnisse\"  _
_
_
'Startpfad anpassen
.InitialView = 2
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder = "" Then Exit Sub
strFolder = strFolder & "\"
strFile = Dir(strFolder & "*.txt")
Do While strFile  ""
strSheetName = Replace(strFile, ".txt", "")
lngIndex = 0
Open strFolder & strFile For Input As #1
Do While Not EOF(1)
lngCnt = lngCnt + 1
Input #1, strTmp
Loop
Close #1
ReDim varValues(1 To lngCnt - 32, 1 To 10)
lngCnt = 0
Open strFolder & strFile For Input As #1
Do While Not EOF(1)
lngCnt = lngCnt + 1
Input #1, strTmp
If lngCnt > 32 Then
If Len(strTmp) > 0 Then
strTmp = Trim$(strTmp)
If Right(strTmp, 1) = Chr(9) Then strTmp = Left(strTmp, Len(strTmp) - 1)
lngIndex = lngIndex + 1
varTmp = Split(strTmp, vbTab)
For intC = 0 To UBound(varTmp)
varValues(lngIndex, intC + 1) = Replace(varTmp(intC), ".", ",")
Next
End If
End If
Loop
Close #1
If lngIndex > 0 Then
'Worksheet vorhanden?
On Error Resume Next
Set wks = Worksheets(strSheetName)
On Error GoTo 0
'Wenn nicht, dann einfügen
If wks Is Nothing Then
Set wks = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wks.Name = strSheetName
End If
With wks
.Cells.ClearContents
.Range(.Cells(1, 1), .Cells(UBound(varValues, 1), UBound(varValues, 2))) = varValues
End With
End If
Set wks = Nothing
strFile = Dir
Loop
Sheets("Tabelle1").Select
End Sub


Für Eure Mühen bedanke ich mich schon mal!
Christian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Textimport - Komma/Punkt
11.08.2008 16:53:20
ChrisL
hallo Christian
Prüfe mal die Einstellung Dezimaltrennzeichen auf den unterschiedlichen PCs.
unter Extra, Optionen, International
resp.
Application.International(xlDecimalSeparator)
Gruss
Chris

AW: Textimport - Komma/Punkt
11.08.2008 18:52:00
Christian
Hallo Chris,
danke für die schnelle Antwort. Es ist "Trennzeichen vom Betriebssystem übernehmen" angeklickt. Ich denke mal das ist richtig so. Hab auch andere Einstellungen probiert, ohne Erfolg!
Ich denke der Fehler liegt beim Datenimport aus der Textdatei.
Christian

AW: Textimport - Komma/Punkt
11.08.2008 18:52:24
Christian
Hallo Chris,
danke für die schnelle Antwort. Es ist "Trennzeichen vom Betriebssystem übernehmen" angeklickt. Ich denke mal das ist richtig so. Hab auch andere Einstellungen probiert, ohne Erfolg!
Ich denke der Fehler liegt beim Datenimport aus der Textdatei.
Christian

Anzeige
AW: Textimport - Komma/Punkt
11.08.2008 18:59:39
ChrisL
Hallo Christian
Dann solltest du mal im Betriebssystem gucken oder teste mit...

Sub t()
MsgBox Application.International(xlDecimalSeparator)
End Sub


Worauf es hinausläuft, ich denke die Replace Funktion müsste variabel gehalten werden in dem du mittels International auf die unterschiedlichen Einstellungen reagierst.
Gruss
Chris

AW: Textimport - Komma/Punkt
12.08.2008 09:30:56
christian
Hallo Chris,
ich hab bei Deinen Code in 2003 und 2002 laufen lassen und die MessageBox zeigt in beiden Fällen ein Komma.
Ist das jetzt gut?
Christian

AW: Textimport - Komma/Punkt
12.08.2008 11:30:00
ChrisL
Hallo Christian
Ja, ist jetzt gut... man kann sich ja mal irren :-)
cu
Chris

Anzeige
AW: Textimport - Komma/Punkt
12.08.2008 11:57:00
christian
Hallo Chris,
wenn man etwas ausschließen kann, dann ist das auch ein Erfolg!
Danke Christian

AW: Hilfe Kompatibilitätsproblem
11.08.2008 21:52:22
Tino
Hallo,
habe deinen Code nicht getestet, du könntest aber mal versuchen die Deklarierung auf
Dim varValues() As Double oder Dim varValues() As Single zu setzen.
Jetzt dürfen aber nur Zahlen an diese übergeben werden und kein Text.
Gruß Tino

AW: Hilfe Kompatibilitätsproblem
12.08.2008 09:27:00
christian
Hallo Tino,
danke für Deine Antwort, leider sind meine VBA Kenntnisse miserabel! Den Code hat Rudi, hier aus dem Excel Forum geschrieben.
Vielleicht könntest Du das etwas ausführlicher erklären, so das auch ich es verstehe.
Danke Christian

Anzeige
AW: Hilfe Kompatibilitätsproblem
12.08.2008 15:21:50
Tino
Hallo,
stell mir eine entsprechende Textdatei zur Verfügung damit ich diesen Code testen und eventuell entsprechend anpassen kann.
Vorher kann ich keine weitere Hilfestellung geben. sorry
Gruß Tino

AW: Hilfe Kompatibilitätsproblem
12.08.2008 17:25:12
Tino
Hallo,
ok schreibe nach der Zeile (also hinzufügen)
varValues(lngIndex, intC + 1) = Replace(varTmp(intC), ".", ",")
noch diese mit rein, sollte dass Problem beheben.
If IsNumeric(varValues(lngIndex, intC + 1)) Then _
varValues(lngIndex, intC + 1) = CDbl(varValues(lngIndex, intC + 1))

So wird aus einer Zahl die als String vorliegt eine echte zahl gemacht
Gruß Tino
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige