Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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

VBA - Dateien öffnen -> Wert ersetzen -> Speichern

VBA - Dateien öffnen -> Wert ersetzen -> Speichern
02.03.2018 18:52:27
Salocinz
Hallo,
ich als VBA-Laie habe mal eine Frage bzw. eine Bitte:
Ich muss mehrere hundert Dateien (Endung .sch) einmal öffnen, dann jeweils alle "[" und "]" in dem gesamten Dokument durch " " ersetzen und anschließen die Datei als .xlsx wieder mit gleicher Nummerierung wieder abspeichern.
Die Dateien "Datei1"-"Datei1000" liegen alle im selben Verzeichnis "C:\Desktop\Beispiel".
In jeder Datei sollen alle eckigen Klammern "[" und "]" gelöscht bzw. durch ein Leerzeichen ersetzt werden.
Abgespeichert sollen die Dateien dann auch wieder "Datei1.xlsx" - "Datei1000.xlsx" heißen und im Verzeichnis "C:\Desktop\Beispiel\Konvertiert" liegen.
Es wäre wirklich super, wenn mir jemand helfen könnte!!!!
LIEBEN DANK LEUTE!!!!
Salocinz

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Crosspost ohne Hinweis.
02.03.2018 19:53:45
Werner
Hallo,
wenn schon Crossposting, dann bitte die Beiträge in den verschiedenen Foren verlinken.
Gruß Werner
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
02.03.2018 20:29:08
Salocinz
Entschuldigung, diese Regel war mir nicht bekannt!
Wie schon gesagt, ich bin wirklicher VBA-Laie und weiß mir nicht anders zu helfen als euch zu fragen.
Ich hoffe Ihr könnte mir dennoch helfen!
PS: ich habe die Frage noch in Folgenden Foren gestellt:
http://www.vba-forum.de/Forum/View.a...peichern_unter
https://www.herber.de/forum/ am 2018-03-02 18:52:27
Dankeschön!
Anzeige
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
02.03.2018 21:39:21
Werner
Hallo,
habe mal ein wenig gegoogelt. Scheint mir ja eine Datei aus einem CAD-Programm zu sein. Dürfte sich nicht mit Excel öffnen lassen.
Gruß Werner
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 13:51:54
Salocinz
Hallo Werner,
die Dateien lassen sich problemlos über "Öffnen mit" mit Excel öffnen. Ich habe eine Beispieldatei angehängt.
https://www.herber.de/bbs/user/120188.zip
Vielen Dank für die Bemühungen!
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 14:54:09
Werner
Hallo,
hier mal nur für eine Datei. Teste mal, ob das Ergebnis dann so aussehen soll. Das ist jetzt noch nicht für alle Dateien im Verzeichnis und auch noch ohne das anschließende Speichern als Excel-Datei.
Sub Makro1()
Dim loLetzte As Long
Workbooks.OpenText Filename:="C:\Desktop\Beispiel\Beispiel1.sch", Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(0, 1), _
TrailingMinusNumbers:=True
With ActiveSheet
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(1, 1), .Cells(loLetzte, 1)).Replace What:="[", Replacement:=" ", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Range(.Cells(1, 1), .Cells(loLetzte, 1)).Replace What:="]", Replacement:=" ", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns("A:A").AutoFit
End With
End Sub
Gruß Werner
Anzeige
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 15:54:45
Salocinz
Hallo Werner,
ja also das sieht schonmal sehr gut aus!!!! Vielen Dank schon einmal!
Allerdings schreibt er nun alle Einträge in die erste Spalte A, wobei die Einträge etwas unregelmäßig (manchmal ohne, manchmal mit Leerzeichen getrennt werden).
Es soll jedoch immer nur eine Zahl (als 10 ist auch eine Zahl) wie in der Datei .sch in einer Spalte stehen.
Hier das Ergebnis, dass sich bei mir ergibt:
https://www.herber.de/bbs/user/120189.xlsx
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 16:18:20
Werner
Hallo,
sorry, das verstehe ich jetzt nicht wirklich. Es bringt mir nichts, wenn du mir die Datei hier hochlädst, so wie sie nach dem ersetzen der [] raus kommt (wenn das so nicht deinen Vorstellungen entpricht).
Dann ändere doch die hochgeladene Datei einmal händisch so ab, wie du dir das Ergebnis vorstellst und lade sie noch einmal hoch.
Gruß Werner
Anzeige
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 17:46:26
Werner
Hallo,
meinst du so? Tabstop getrennt?
Da ist jetzt schon die Erweiterung zum Speichern im gleichen Verzeichnis mit dabei.
Bitte die Datei, von der aus du das Makro aufrufst, vor der ersten Makroausführung im gleichen Verzeichnis speichern wie die .sch Dateien.
Sub Makro1()
Dim loLetzte As Long, loSpalte As Long
Dim strPath As String, strDateiname As String
Application.ScreenUpdating = False
Workbooks.OpenText Filename:="C:\Desktop\Beispiel\Beispiel1.sch", Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, Tab:=True, TrailingMinusNumbers:=True
With ActiveSheet
loLetzte = .UsedRange.Rows.Count
loSpalte = .UsedRange.Columns.Count
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).Replace What:="[", Replacement:=" ", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).Replace What:="]", Replacement:=" ", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Range(.Cells(1, 1), .Cells(1, loSpalte)).EntireColumn.AutoFit
strPath = ThisWorkbook.Path & "\"
strDateiname = .Name
.SaveAs Filename:=strPath & strDateiname, FileFormat:=xlWorkbookDefault
ActiveWorkbook.Close
End With
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 20:20:33
Salocinz
Hallo Werner,
wow, vielen vielen Dank! Das sieht echt super aus!
Gäbe es noch die Möglichkeit, eine Schleife einzubauen, sodass das automatisch für eine Anzahl Dateien mit fortlaufender Nummer (Beispiel1, Beispiel2,...Beispiel100) durchlaufen wird?
Vielen Dank für deine Mühe!!
Falls du magst, würde ich dir gerne für deine Hilfe ein kleines "Dankeschön" (via Paypal) schicken, du hast mir wirklich sehr viel Zeit gespart!
Schreib mir doch einfach eine Mail an "salocinz@web.de" =)
LG und schönen Abend
Salocinz
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
03.03.2018 20:24:11
Werner
Hallo,
das mit der Schleife kommt dann noch - aber heute nicht mehr. Wollte erst mal warten, ob alles andere so weit passt.
Mal schauen, ob ich morgen noch dazu komme.
Gruß Werner
Anzeige
AW: VBA - Dateien öffnen -> Wert ersetzen -> Speichern
04.03.2018 10:18:43
Werner
Hallo,
hier jetzt mit einer Schleife über alle Dateien im Ordner mit der Endung .sch
Den Zielordner habe ich jetzt im Code direkt angegeben. Es ist also egal, in welchem Ordner sich die Datei mit dem Makro befindet.
Option Explicit
Sub Makro1()
Dim loLetzte As Long, loSpalte As Long
Dim strPathQuelle As String, strFileQuelle As String, strExt As String
Dim strPathZiel As String, strFileZiel As String
Application.ScreenUpdating = False
strPathQuelle = "C:\Desktop\Beispiel\"
strExt = "*.sch"
If strPathQuelle = "" Then
Exit Sub
Else
strFileQuelle = Dir(strPathQuelle & strExt)
Do While Len(strFileQuelle) > 0
Workbooks.OpenText Filename:=strPathQuelle & strFileQuelle, Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, Tab:=True, TrailingMinusNumbers:=True
With ActiveSheet
loLetzte = .UsedRange.Rows.Count
loSpalte = .UsedRange.Columns.Count
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).Replace _
What:="[", Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).Replace _
What:="]", Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
.Range(.Cells(1, 1), .Cells(1, loSpalte)).EntireColumn.AutoFit
strPathZiel = "C:\Desktop\Beispiel\Konvertiert\"
strFileZiel = .Name
.SaveAs Filename:=strPathZiel & strFileZiel, FileFormat:=xlWorkbookDefault
ActiveWorkbook.Close
strFileQuelle = Dir()
End With
Loop
End If
Application.ScreenUpdating = True
End Sub
Im Code ist aber keine Prüfung eingebuat, ob der/die Ordner schon existiert.
Gruß Werner
Anzeige
und wenn es passt....
04.03.2018 10:22:32
Werner
Hallo,
...dann bitte nicht vergessen in den anderen Foren mitzuteilen, dass sich die Sache erledigt hat.
Gruß Werner
AW: und wenn es passt....
05.03.2018 20:07:22
Salocinz
Vielen vielen Dank!!!!
Es funktioniert perfekt!
Ich habe in den anderen Foren den Status auf "erledigt" gesetzt!
Gerne u.Danke für die Rückmeldung. o.w.T.
05.03.2018 23:45:14
Werner

359 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige