Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Hilfe Kompatibilitätsproblem

Betrifft: Hilfe Kompatibilitätsproblem von: christian
Geschrieben am: 11.08.2008 15:48:30

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

  

Betrifft: Textimport - Komma/Punkt von: ChrisL
Geschrieben am: 11.08.2008 16:53:20

hallo Christian

Prüfe mal die Einstellung Dezimaltrennzeichen auf den unterschiedlichen PCs.

unter Extra, Optionen, International
resp.
Application.International(xlDecimalSeparator)

Gruss
Chris


  

Betrifft: AW: Textimport - Komma/Punkt von: Christian
Geschrieben am: 11.08.2008 18:52:09

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


  

Betrifft: AW: Textimport - Komma/Punkt von: Christian
Geschrieben am: 11.08.2008 18:52:24

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


  

Betrifft: AW: Textimport - Komma/Punkt von: ChrisL
Geschrieben am: 11.08.2008 18:59:39

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


  

Betrifft: AW: Textimport - Komma/Punkt von: christian
Geschrieben am: 12.08.2008 09:30:56

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


  

Betrifft: AW: Textimport - Komma/Punkt von: ChrisL
Geschrieben am: 12.08.2008 11:30:45

Hallo Christian

Ja, ist jetzt gut... man kann sich ja mal irren :-)

cu
Chris


  

Betrifft: AW: Textimport - Komma/Punkt von: christian
Geschrieben am: 12.08.2008 11:57:00

Hallo Chris,

wenn man etwas ausschließen kann, dann ist das auch ein Erfolg!

Danke Christian


  

Betrifft: AW: Hilfe Kompatibilitätsproblem von: Tino
Geschrieben am: 11.08.2008 21:52:22

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


  

Betrifft: AW: Hilfe Kompatibilitätsproblem von: christian
Geschrieben am: 12.08.2008 09:27:57

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


  

Betrifft: AW: Hilfe Kompatibilitätsproblem von: Tino
Geschrieben am: 12.08.2008 15:21:50

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


  

Betrifft: AW: Hilfe Kompatibilitätsproblem von: christian
Geschrieben am: 12.08.2008 15:51:25

Hallo,

das soll kein Problem sein!
https://www.herber.de/bbs/user/54543.txt


Danke schon mal
Christian


  

Betrifft: AW: Hilfe Kompatibilitätsproblem von: Tino
Geschrieben am: 12.08.2008 17:25:12

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