HERBERS Excel-Forum - das Archiv
Arbeitsblatt ohne Select speichern
Josef

Hallo!
mit folgendem Code wird das Arbeitsblatt aktiviert, die Zelle A1 markiert, und danach eine Userform geöffnet:


Sub Speichere_Ausprägungen()
On Error GoTo Weiter
Sheets("Ausprägungen").Select
Range("A1").Select
UserForm6.TextBox2.Text = "G:\DOK\Master\Import_NOVA\Zum Importieren\Import_Ausprägungen_*.txt"
UserForm6.Show
Weiter:
End Sub


Über die Userform haeb ich dann die Möglichkeit, dieses Arbeitsblatt als *.txt Datei abzuspeichern.
Ist es bitte möglich, die Daten in diesem Arbeitsblatt ohne Select Befehl abzuspeichern?
Wichtig für die Speicherung wäre, dass in diesem Blatt die Zelle A1 markiert ist.
Danke
Josef

AW: Arbeitsblatt ohne Select speichern
Hajo_Zi

Hallo Josef,
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden muss.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) – dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: „Das mache ich später“ ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: mit und ohne select
Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Warum muss die Zelle markiert sein.

AW: Arbeitsblatt ohne Select speichern
Josef

Hallo Hajo!
Danke für Deine Antwort.
Zu
Warum muss die Zelle markiert sein.
Weil ich mit folgendem Code in der UserForm die Werte auf dieser Seite als Textfile speichere.:
Wenn die Zellec A1 nicht markiert ist erfolgt nur eine Leerspeicherung.
Josef


Private Sub CommandButton2_Click()
F = FreeFile(0)
'fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\*.txt")
fname = TextBox2.Text
MsgBox "File Selected is: " & fname
If fname <> False Then
Open fname For Output As #F
Set rng = ActiveCell.CurrentRegion
Debug.Print rng.Address
FCol = rng.Columns(1).Column
LCol = rng.Columns(rng.Columns.Count).Column
Frow = rng.Rows(1).Row
Lrow = rng.Rows(rng.Rows.Count).Row
For i = Frow To Lrow
outputLine = ""
For j = FCol To LCol
If j <> LCol Then
'Semikolon als Texttrennzeichen, kann geändert werden
outputLine = outputLine & Cells(i, j) & ";"
Else
outputLine = outputLine & Cells(i, j)
End If
Next j
Print #F, outputLine
Next i
Close #F
End If
Unload UserForm6
End Sub



Private Sub UserForm_Initialize()
TextBox2.Text = "G:\DOK\Master\Import_NOVA\Zum Importieren\*.txt"
End Sub


AW: Arbeitsblatt ohne Select speichern
Hajo_Zi

Hallo Josef,
ich baue das jetzt nicht nach.
Set Rng = Range("A1").CurrentRegion
Gruß Hajo

AW: Arbeitsblatt ohne Select speichern
Josef

Hallo Hajo!
Dann nehme ich mal an das nachstehender Code ungefähr passen könnte ?
Josef


Private Sub CommandButton2_Click()
Dim wks As Worksheet
Set wks = Workbooks("Masterfile.xls").Worksheets("Werte NOVA")
F = FreeFile(0)
'fname = InputBox("Bitte geben Sie den Dateinamen ein!", , "H:\NOVAIMPORT\*.txt")
fname = TextBox2.Text
MsgBox "File Selected is: " & fname
If fname <> False Then
Open fname For Output As #F
Set rng = wks.Range("A1").CurrentRegion
Debug.Print rng.Address
FCol = rng.Columns(1).Column
LCol = rng.Columns(rng.Columns.Count).Column
Frow = rng.Rows(1).Row
Lrow = rng.Rows(rng.Rows.Count).Row
For i = Frow To Lrow
outputLine = ""
For j = FCol To LCol
If j <> LCol Then
'Semikolon als Texttrennzeichen, kann geändert werden
outputLine = outputLine & wks.Cells(i, j) & ";"
Else
outputLine = outputLine & wks.Cells(i, j)
End If
Next j
Print #F, outputLine
Next i
Close #F
End If
Unload UserForm6
End Sub


AW: Arbeitsblatt ohne Select speichern
Hajo_Zi

Hallo Josef,
warum Beitrag offen? Testen kannst Du es ja.
Gruß Hajo

AW: Arbeitsblatt ohne Select speichern
Josef

Hallo Hajo!
Habe jetzt getestet und es funktioniert einwandfrei.
Danke nochmals für Deine Mühe und Deine Hilfe.
Josef