Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Speichern unter Zellinhalt per VBA
Andreas
Hallo!
Über einen CommandButton kann ich eine Mappe nach einigen Modifizierungen unter dem Zellinhalt der Zelle "D8" des Blattes "Artikel" speichern. Nun ist es so, dass ich manchmal vergesse die Zelle "D8" auszufüllen und dann natürlich ein Fehler angezeigt wird. Wie muss der Code ergänzt werden, damit, wenn die Zelle "D8" im Blatt "Artikel" leer ist, sich eine Box öffnet mit dem Text: "Bitte Auftragsnummer eingeben" und einem Feld, in dem ich die Auftragsnummer auch gleich eingeben kann. Nach dem Bestätigen (mit Ok) soll die Eingabe nach "D8" geschrieben werden und der nachfolgende Code weiterlaufen.
Der code müsste also bei 'Dateiname für die Kopie der Mappe festlegen und
'Kopie erstellen
ergänzt werden. Habe leider nicht viel Ahnung von VBA.

Private Sub ArbeitSpeichern_Click()
Dim spaArray As Variant
Dim i As Integer
Dim n As Integer
Dim strFileNameCopy As String, strLinkCompare
Dim rng As Range, rngFormula As Range
Dim wbCopy As Workbook
' Bildschirmaktualisierung unterdrücken
Application.ScreenUpdating = False
' Dateinamen für Kopie der Mappe festlegen
strFileNameCopy = "D:\Sascha\Excel\Gravurlisten\" & _
Sheets("Artikel").Range("D8") & ".xls"
' Kopie erstellen
ThisWorkbook.SaveCopyAs strFileNameCopy
' Kopie öffnen
Workbooks.Open strFileNameCopy
spaArray = Array("D", "E", "F", "G", "H", "I", "J", "K", "L", _
"M", "N", "O", "P", "Q", "R", "S")
' zunächst den Mappen- und Blattschutz aufheben
' dies kann entfallen, wenn die Quellmappe keinen
' Schutz aufweist
ActiveWorkbook.Unprotect
For i = 1 To Sheets.Count
Sheets(i).Unprotect
Next i
' Spalten ausblenden
For i = 2 To Worksheets.Count
For n = LBound(spaArray) To UBound(spaArray)
With Worksheets(i).Columns(spaArray(n))
' Spalte ausblenden, wenn die erste Zelle der Spalte leer
' ist oder den String "0" enthält
.Hidden = (IsEmpty(.Cells(1)) Or .Cells(1) = "0")
End With
Next n
Next i
' Verknüpfungen auf das Artikelblatt entfernen
' es wird vorausgesetzt, das dieses Blatt das erste der
' Blattaufzählung ist
' Vergleichsstring zusammensetzen
strLinkCompare = "=" & Worksheets(1).Name & "!*" ' liefert "=Artikel!*"
For i = 2 To Worksheets.Count
With Worksheets(i).Cells
' Wenn ein Blatt keine Formeln enthält, entsteht bei
' Anwendung der SpecialCells-Methode ein Laufzeitfehler
' der abgefangen werden muß
On Error Resume Next
Set rngFormula = .SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
' alle Zellen mit Formeln durchlaufen
If (Not rngFormula Is Nothing) Then
For Each rng In rngFormula
' falls eine Verknüpfung enthalten ist
If (rng.Formula Like strLinkCompare) Then
' dann die Formel durch den Zellwert ersetzen
' dadurch wird die Verknüpfung entfernt
rng.Formula = rng.Value
End If
Next
End If
End With
Next i
' Warnungen deaktivieren
Application.DisplayAlerts = False
' erstes Blatt der Mappe entfernen
Worksheets(1).Delete
' wenn "I18" im ersten Blatt leer, dann Blatt "Auswertung CalcCase" löschen
If [I18].Value = "" Then
Sheets("Auswertung_CalcCase_farbig").Delete
End If
' Warnungen aktivieren
Application.DisplayAlerts = True
' Schutz setzen
For i = 1 To Sheets.Count
Sheets(i).Protect , DrawingObjects:=True, _
Contents:=True, Scenarios:=True
Sheets(i).EnableSelection = xlUnlockedCells
Next i
ActiveWorkbook.Protect , Structure:=True, Windows:=False
' Warnungen deaktivieren
Application.DisplayAlerts = False
' neu speichern im Excel97-Format
ActiveWorkbook.SaveAs Filename:=strFileNameCopy, FileFormat:=xlExcel9795
' Warnungen wieder aktivieren
Application.DisplayAlerts = True
' Kopie schliessen
ActiveWorkbook.Close
' Warnungen deaktivieren
Application.DisplayAlerts = False
' Original schliessen
ActiveWorkbook.Close
' Warnungen wieder aktivieren
Application.DisplayAlerts = True
' Bildschirmaktualisierung wieder anzeigen
Application.ScreenUpdating = True
End Sub

Danke für die Hilfe!
mfg, Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Speichern unter Zellinhalt per VBA
03.04.2004 18:29:54
Oberschlumpf
Hallo Andreas
Versuch mal dies hier.
Ändere diesen Code

' Dateinamen für Kopie der Mappe festlegen
strFileNameCopy = "D:\Sascha\Excel\Gravurlisten\" & _
Sheets("Artikel").Range("D8") & ".xls"

wie folgt

If Sheets("Artikel").Range("D8").Value = "" Then
Auftragsnummer = Inputbox("Bitte eine gültige Artikelnr. eingeben.")
Sheets("Artikel").Range("D8").Value = Auftragsnummer
strFileNameCopy = "D:\Sascha\Excel\Gravurlisten\" & _
Sheets("Artikel").Range("D8") & ".xls"
Else
strFileNameCopy = "D:\Sascha\Excel\Gravurlisten\" & _
Sheets("Artikel").Range("D8") & ".xls"
End If

Die Variable Auftragsnummer solltest Du am Anfang des Codes noch mit
Dim Auftragsnummer As Datentyp
deklarieren.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Speichern unter Zellinhalt per VBA
PeterW
Hallo Andreas,
ändere den Anfang des Codes wie folgt:
Dim spaArray As Variant
Dim i As Integer
Dim n As Integer
Dim strFileNameCopy As String, strLinkCompare
Dim rng As Range, rngFormula As Range
Dim wbCopy As Workbook
Dim strName As String

' Bildschirmaktualisierung unterdrücken
Application.ScreenUpdating = False

' Dateinamen für Kopie der Mappe festlegen
'vorher abfragen, ob in Artikel!D8 etwas steht
If IsEmpty(Sheets("Artikel").Cells(8, 4)) Then
Do Until strName ""
strName = CStr(InputBox("Bitte Auftragsnummer eingeben"))
Loop
Sheets("Artikel").Cells(8, 4) = strName
End If
Gruß
Peter
Anzeige
AW: Speichern unter Zellinhalt per VBA
Oberschlumpf
Hi Peter
Jep....besser gehts nicht :-)
In Deinem Bsp geht NIX ohne Eingabe einer Nummer.
Ciao
Thorsten
AW: Speichern unter Zellinhalt per VBA
PeterW
Hallo Thorsten,
es geht noch besser da die die Abfrage auf ungültige Zeichen für einen Dateinamen noch fehlt. ;-)
Gruß
Peter
Bin begeistert !!
tobi
Bin begeistert !!
WO LERNT MAN SOWAS EIGENTLICH ?
AW: Bin begeistert !!
PeterW
Hallo Tobi,
beispielsweise indem man hier im Forum die Fragen anschaut, versucht selber eine Lösung zu finden und diese dann mit den gegebenen Antworten vergleicht. ;-)
Empfehlenswert sind auch die Lernmittel des Forumbetreibers, sie sind jeden Cent wert!
Gruß
Peter
Anzeige
AW: Bin begeistert !!
03.04.2004 18:54:56
Oberschlumpf
OK OK...hast ja Recht :-)
trotzdem, Deine Lösung is auch ohne den ollen Schnickschnack für Dateinamen voll toll :-)
Ciao
Thorsten
AW: Teste es gleich, Danke für die Hilfe!
03.04.2004 18:43:46
Andreas
x
AW: Funzt super, Danke!!!
03.04.2004 19:26:02
Andreas
Danke für eure Hilfe, bin auch begeistert, wie schnell man hier Hilfe bekommt.
Habe die Variante von P.W. genommen.
mfg, Andreas

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige