Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1016to1020
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

Wert um eins erhöhen, dann die Datei speichern ?

Wert um eins erhöhen, dann die Datei speichern ?
22.10.2008 17:23:24
Selma
Hallo Leute,
in der aktive Datei möchte ich ein Makro ausführen, der folgendes macht:
1. MsgBox "Bitte den Startwert eintragen" anzeigen.
Der eingegebene Wert soll in Zelle C4 eingetragen werden und die Datei in selben Pfad wie die aktive Datei mit Namen "Berechnungsblatt_UNI_(Wert aus Zelle C4).xls" speichern und schließen.
2. MsgBox "Wie oft soll die Datei gespeichert werden?" anzeigen.
Wenn ich z.B. 20 eintrage, dann den Wert aus Zelle C4 um eins erhöhen und Datei 20-mal speichern und schließen.
Evtl. vorhandene (existierende) Dateien sollen nicht überschrieben werden.
Wie mache ich das ?
Besten Dank im Voraus !
Viele Grüße,
Selma

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert um eins erhöhen, dann die Datei speichern ?
22.10.2008 18:22:58
fcs
Hallo Selma,
hier mein Vorschlag.
Gruß
Franz

Sub aaTest()
Dim varEingabe, wks As Worksheet, wb As Workbook, intI As Integer
Dim strDateiName As String
Const strTeilName As String = "Berechnungsblatt_UNI_"
Set wb = ActiveWorkbook
Set wks = ActiveSheet
varEingabe = Application.InputBox(Prompt:="Bitte den Startwert eingeben", _
Title:="Datei mit Serien-Nummer Speichern", _
Default:=wks.Range("C4") + 1, _
Type:=1)
If varEingabe = False Then Exit Sub
wks.Range("C4").Value = varEingabe
strDateiName = wb.Path & "\" & strTeilName & wks.Range("C4") & ".xls"
If VBA.Dir(strDateiName)  "" Then
MsgBox "Datei " & strDateiName & " schon vorhanden!"
Else
wb.SaveCopyAs Filename:=strDateiName
End If
varEingabe = Application.InputBox(Prompt:="Wie oft soll die Datei gespeichert werden?", _
Title:="Datei mit Serien-Nummern Speichern", _
Default:=0, _
Type:=1)
If varEingabe = False Then Exit Sub
For intI = 1 To varEingabe
wks.Range("C4").Value = wks.Range("C4").Value + 1
strDateiName = wb.Path & "\" & strTeilName & wks.Range("C4") & ".xls"
If VBA.Dir(strDateiName)  "" Then
MsgBox "Datei " & strDateiName & " schon vorhanden!"
Else
wb.SaveCopyAs Filename:=strDateiName
End If
Next
End Sub


Anzeige
AW: Wert um eins erhöhen, dann die Datei speichern ?
22.10.2008 22:07:00
Selma
Hallo Franz,
es funktioniert prima.
Vielen, vielen Dank !
Liebe Grüße,
Selma
AW: Wert um eins erhöhen, dann die Datei speichern ?
23.10.2008 09:30:43
Selma
Hallo Franz,
doch noch zwei Fragen:
Ich habe mir eine Datei "Berechnungsblatt_Blanko.xls" erstellt. In diese Datei habe ich dein Makro eingefügt, dann erstelle ich andere Dateien.
1.) Wie kann ich dies Berechnungsblatt_UNI_ auch als MsgBox anzeigen, damit ich die Möglichkeit habe dies beim Erstellen der Dateien dies evtl. zu ändern?
2.) In erstellten Datein befindet sich obiger Makro auch. Lassen sich die neu erstellte Dateien ohne Makro abspeichern?
Besten Dank !
Viele Grüße,
Selma
Anzeige
AW: Wert um eins erhöhen, dann die Datei speichern ?
23.10.2008 10:56:00
fcs
Hallo Selma,
hier die Anpassung.
Der Teilname des Dateinamens kann jetzt in einer Eingabebox eingegeben/modifiziert werden.
Die erstellte Kopie der Datei wird in der Subroutine nochmals geöffnet und der VBA-Code komplett gelöscht.
Damit das Löschen des Codes funktioniert muss du ggf. im Menü Extras--Optionen--Register "Sicherheit"--Makrosicherheit -- Register "vertrauenswürdige Herausgeber" die Option "Zugriff auf Visual Basic Project vertrauen" aktivieren. Diese Menüfolge gilt für Excel 2003, Excel 2000: ?
Alternativ könntest du das Makro auch in deiner persönlichen Makro-Arbeitsmappe in einem Modul speichern oder auch in einer anderen Datei, als in der Datei von der die Kopien erstellt werden. Dann ist in den Kopien auch kein Code enthalten.
Gruß
Franz

Sub aaTest()
Dim varEingabe, wks As Worksheet, wb As Workbook, intI As Integer
Dim strDateiName As String
Dim strTeilName As String
Set wb = ActiveWorkbook
Set wks = ActiveSheet
varEingabe = Application.InputBox(Prompt:="Teilnamen der Datei eingeben", _
Title:="Datei mit Serien-Nummer Speichern", _
Default:="Berechnungsblatt_UNI_", _
Type:=2)
If varEingabe = False Then
Exit Sub
Else
strTeilName = varEingabe
End If
varEingabe = Application.InputBox(Prompt:="Bitte den Startwert eingeben", _
Title:="Datei mit Serien-Nummer Speichern", _
Default:=wks.Range("C4") + 1, _
Type:=1)
If varEingabe = False Then Exit Sub
wks.Range("C4").Value = varEingabe
strDateiName = wb.Path & "\" & strTeilName & wks.Range("C4") & ".xls"
If VBA.Dir(strDateiName)  "" Then
MsgBox "Datei " & strDateiName & " schon vorhanden!"
Else
wb.SaveCopyAs Filename:=strDateiName
Call Code_loeschen(strDateiName)
End If
varEingabe = Application.InputBox(Prompt:="Wie oft soll die Datei gespeichert werden?", _
Title:="Datei mit Serien-Nummern Speichern", _
Default:=0, _
Type:=1)
If varEingabe = False Then Exit Sub
For intI = 1 To varEingabe
wks.Range("C4").Value = wks.Range("C4").Value + 1
strDateiName = wb.Path & "\" & strTeilName & wks.Range("C4") & ".xls"
If VBA.Dir(strDateiName)  "" Then
MsgBox "Datei " & strDateiName & " schon vorhanden!"
Else
wb.SaveCopyAs Filename:=strDateiName
Call Code_loeschen(strDateiName)
End If
Next
End Sub
Sub Code_loeschen(strDatei As String)
'Gesamten Code und Module in Datei löschen
Dim myVBComponents As Object, wb As Workbook
On Error GoTo Fehler
Application.ScreenUpdating = False
Set wb = Application.Workbooks.Open(Filename:=strDatei)
'Sicherheitsabfrage
'If MsgBox("Sämtlichen VBA-Code in Datei " & wb.FullName & " löschen?", _
vbYesNo, "VBA-Code löschen") = vbYes Then
'Sicherheits-check um nicht sich selbst zu löschen
If LCase(wb.Name) = LCase(ThisWorkbook.Name) Or _
LCase(wb.Name) = LCase("Personl.xls") Then
MsgBox "In der Arbeitsmappe " & wb.Name & _
" darf dieses Makro nicht ausgeführt werden!"
Exit Sub
End If
With wb.VBProject
For Each myVBComponents In .VBComponents
Select Case myVBComponents.Type
Case 1, 2, 3
With myVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
.VBComponents.Remove .VBComponents(myVBComponents.Name)
Case 100
With myVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
wb.Save
wb.Close
Set wb = Nothing
' End If 'zur Sicherheitsabfrage
Fehler:
If Err.Number  0 Then
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description & vbLf _
& "VBA-Code wurde ggf. wegen Sperrung des Zugriffs nicht gelöscht!"
If Not wb Is Nothing Then wb.Close savechanges:=False
End If
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Wert um eins erhöhen, dann die Datei speichern
23.10.2008 18:33:00
Selma
Liebe Grüße,
Selma

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige