Anzeige
Archiv - Navigation
1008to1012
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
Inhaltsverzeichnis

Datei "umspeichern" - VBA

Datei "umspeichern" - VBA
21.09.2008 14:46:00
Wolfgang
Hallo,
mit untenstehendem Code werden Daten aus einer tmp-Datei importiert. Es wird immer die zuletzt generierte Datei angesprochen. Seit geraumer Zeit wird nun diese tmp-Datei in einem UTF-8-Format "geliefert", welches dazu führt, dass die Umlaute nicht sauber importiert werden. Nun kam mir die Idee, ob nicht eine Möglichkeit besteht, diese jeweilige Datei entweder neu zu speichern in ANSI oder direkt das Format von UTF in ANSI zu konvertieren. Wäre so etwas denkbar ? - Herzlichen Dank schon jetzt für die Rückmeldungen.
Gruß - Wolfgang

Public Sub TestT()
Dim strUser As String, strPath As String, strhelp As String
' Dein Teil für den UserNamen
strUser = Environ("Username")
strUser = Trim$(Replace(strUser, "GST", ""))
' Zusammenbauen des Pfades aus Vorgabepfad und UserName
strPath = "C:\WINDOWS\Temp\" & strUser & "\Temp"
If Dir(strPath, vbDirectory) = "" Then
MsgBox "Das angegebene Verzeichnis existiert nicht!", vbCritical
Exit Sub
End If
Sheets("Daten").Activate
' Nun noch das TEXT; davor & Aufruf der Function die die neuste Tmp Datei als String zurückgibt. _
_
strhelp = FindNewestTemp(strPath)
If strhelp  "" Then
strPath = "TEXT;" & strhelp
Else
MsgBox "Es wurde keine TMP Datei im angegebenen Verzeichnis gefunden!", vbCritical
Exit Sub
End If
' Und nun nur noch importieren, fertig !!!
With ActiveSheet.QueryTables.Add(Connection:=strPath, Destination:=Range("A1"))
.Refresh
' ChDrive "C"
End With
End Sub



Public Function FindNewestTemp(strPath As String) As String
Dim strFile As String
Dim datNewestDate As Date
Dim myFileSystemObject, myFiles
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPath).Files
If UCase(myFileSystemObject.GetExtensionName(strPath & myFiles.Name)) = "TMP" Then
If myFiles.DateCreated > datNewestDate Then
datNewestDate = myFiles.DateCreated
strFile = myFiles.Name
End If
End If
Next myFiles
If strFile  "" Then
FindNewestTemp = strPath & strFile
Else
FindNewestTemp = ""
End If
End Function


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei "umspeichern" - VBA
22.09.2008 08:48:00
Jürgen
Hallo Wolfgang,
es sollte reichen, in dem Makro die Angabe des Zeichencodes hinzuzufügen:
' Und nun nur noch importieren, fertig !!!
With ActiveSheet.QueryTables.Add(Connection:=strPath, Destination:=Range("A1"))
.TextFilePlatform = -535 'steht für UTF-8
.Refresh
' ChDrive "C"
End With
Gruß, Jürgen
Danke Jürgen
23.09.2008 20:32:20
Wolfgang
Hallo Jürgen,
Danke für Deine Rückmeldung und Ausarbeitung. Ich habe versucht, Deinen Code umzusetzen irgendwie funktioniert das nicht - Fehlermeldung, Projekt (?) nicht vorhanden. - Zwischenzeitlich habe ich einen anderen Weg angedacht und versucht, ihn zu realisieren. Der sauberste und schnellste Weg wäre sicherlich dabei, die temp-Datei direkt im Ordner umzuwandeln oder im Hintergrund zu öffnen, um dann als ANSI wieder abzuspeichern. Das scheint aber wohl irgendwie nicht realisierbar zu sein. In dem Sinne nochmals herzlichen Dank und sorry, dass ich mich jetzt erst wieder zurückmelde.
Gruß - Wolfgang
Anzeige
AW: Danke Jürgen
24.09.2008 01:08:00
Jürgen
Hallo Wolfgang,
eigentlich habe nichts anderes getan als Deinem Code die Zeile
.TextFilePlatform = -535
hinzuzufügen. Das ist meiner Meinung nach auch der sauberste Weg - wozu die Dateien umständlich umformatieren, wenn man den Zeichencode beim Import angeben kann?!
Gruß, Jürgen

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige