Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Teilbereich einer Arbeitsmappe speichern

Betrifft: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 09:05:53

Guten Morgen!

Ich habe eine Excel-Datei mit ca. 50 Spalten und 1.000 Zeilen.
Sie enthält Informationen, die nur für mich sind, und Infos, die ich als Datei mehreren Kollegen zur Verfügung stellen muß.
In der Datei nehme ich oft Änderungen vor. Ich benötige somit immer eine aktuelle Version für mich und eine "abgespeckte" für meine Kollegen.
Ich möchte jetzt aber nicht immer die Spalten löschen, die nicht für meine Kollegen sind und dann unter einem neuen Namen speichern. Gibt es eine Möglichkeit, die Datei mit allen Zeilen, aber nur z.B. von Spalte A-AN zu speichern?
Ich freue mich auf eure Tips!!!
Schon jetzt vielen vielen Dank!

Guten Start in die neue "Fußballlose" Woche

Anja

  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Matthias G
Geschrieben am: 30.06.2008 09:11:57

Hallo Anja,

können denn Makros verwendet werden?
können Deine KollegInnen die Datei ändern und speichern oder sollen sie nur Lesezugriff haben?

Gruß Matthias


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 09:20:41

Hallo Matthias,

die Datei wird hier intern auf einem Laufwerk gespeichert, zu dem alle Zugriff haben. Die Datei kann aber nur von mir geändert und die Änderungen dann gespeichert werden. Meine Kollegen können sie aber z.B. auf ihren eigenen Rechner speichern und dann bearbeiten.
Makros fände ich nicht so toll, da die Datei per Mail auch an Lieferanten verschickt wird (weiß man, ob andere dann damit umghehen können???)

Gruß Anja


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Matthias G
Geschrieben am: 30.06.2008 09:29:57

Hallo Anja,

man könnte die eine, vollständige Datei mit Makros ausstatten, welche dafür sorgen, dass beim Speichern automatisch eine zweite, abgespeckte Datei für die Kollegen erstellt wird (anderer Name und/oder anderes Verzeichnis). Falls nur die abgespeckte Version an Lieferanten verschickt werden muss, dürfte dein zweiter Einwand auch kein Problem sein.

Was hältst du davon?

Gruß Matthias


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 09:31:49

Hallo Matthias,

das wäre super!
Makro ist nicht ganz meins, aber du wirst es mir sicher erklären. :-)

Danke dir schon mal!
Gruß Anja


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Matthias G
Geschrieben am: 30.06.2008 09:36:04

Hallo Anja,

noch ein paar Infos bräuchte ich dazu:

1. wieviele Blätter hat die Arbeitsmappe?
2. welche Blätter sollen in der "Light"-Version enthalten sein?

Gruß Matthias


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 09:41:36

Hallo Matthias,

es ist nur ein Arbeitsblatt und das soll von Spalte A bis AJ mit allen Zeilen enthalten sein.

Danke dir!!!
Gruß Anja


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Matthias G
Geschrieben am: 30.06.2008 10:04:49

Hallo Anja,

folgenden Code in "DieseArbeitsmappe":


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const Blattname = "Tabelle1" 'Name des Blattes anpassen

Dim fn As String
Dim wb As Workbook
Dim rng As Range

 'Speicherpfad der Dateikopie
'fn = "C:\Dokumente und Einstellungen\Matthias\Desktop\xl\Anja\kopie.xls"
' alternativ: relativ von dieser Datei
fn = ThisWorkbook.Path & "\kopie.xls"

Application.ScreenUpdating = False 'Flackern abstellen

'Blatt kopieren in neue Mappe:
ThisWorkbook.Sheets(Blattname).Copy
'in Kopie Spalten löschen (37 = Spalte AK):
ActiveSheet.Range(Columns(37), Columns(Columns.Count)).Delete

'Warnmeldung abschalten ("Überschreiben?"):
Application.DisplayAlerts = False

'Kopie der Mappe speichern und schließen:
With ActiveWorkbook
    .SaveAs Filename:=fn
    .Close
End With

'Warnmeldung wieder einschalten
Application.DisplayAlerts = True

End Sub



Wie das mit Code einfügen geht, kannst du hier nachlesen:
http://www.online-excel.de/excel/singsel_vba.php?f=44

Wenn das soweit klappt, müssten noch ein paar Fehler abgefangen werden, aber teste erst mal bis hierhin.
Ein paar Werte im Code musst du auch anpassen (s.o.).

Gruß Matthias


  

Betrifft: Korrektur von: Matthias G
Geschrieben am: 30.06.2008 10:13:18

Hallo,

folgendes noch ändern:

'in Kopie Spalten löschen (37 = Spalte AK):
Application.ActiveSheet.Range(Columns(37), Columns(Columns.Count)).Delete

Gruß Matthias


  

Betrifft: AW: Korrektur von: Anja Bär
Geschrieben am: 30.06.2008 10:47:40

Hallo Matthias,

alles super!
Hat geklappt!

Vielen vielen Dank!!!

Gruß Anja


  

Betrifft: AW: Korrektur von: Matthias G
Geschrieben am: 30.06.2008 10:53:34

Hallo Anja,

Wenn aber die Kopie auf einem anderen Rechner geöffnet ist (und zwar nicht schreibgeschützt), kommt es zu einem Laufzeitfehler, weil die Kopie dann nicht gespeichert werden kann.

Abfangen kannst du dies mit diesem Code (einfach alles ersetzen):


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const Blattname = "Tabelle1" 'Name des Blattes anpassen

Dim fn As String
Dim wb As Workbook
Dim rng As Range

 'Speicherpfad der Dateikopie
'fn = "C:\Dokumente und Einstellungen\Matthias\Desktop\xl\Anja\kopie.xls"
' alternativ: relativ von dieser Datei
fn = ThisWorkbook.Path & "\kopie.xls"

Application.ScreenUpdating = False 'Flackern abstellen

'Blatt kopieren in neue Mappe:
ThisWorkbook.Sheets(Blattname).Copy
'in Kopie Spalten löschen (37 = Spalte AK):
Application.ActiveSheet.Range(Columns(37), Columns(Columns.Count)).Delete

'Warnmeldung abschalten ("Überschreiben?"):
Application.DisplayAlerts = False

'Kopie der Mappe speichern und schließen:
With ActiveWorkbook
    On Error Resume Next
    .SaveAs Filename:=fn
    If Err.Number > 0 Then
        .Close Savechanges:=False
        MsgBox "Fehler " & Err.Number & ":" & vbLf & Err.Description, vbExclamation, "Fehler  _
beim Speichern der Kopie!"
    Else
        .Close
    End If
    On Error GoTo 0
End With

'Warnmeldung wieder einschalten
Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub


Gruß Matthias


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: David
Geschrieben am: 30.06.2008 09:33:54

Hi.

Erstelle eine zweite Datei. Markiere in deinem Original den Bereich, den du für die Anderen haben willst, kopieren und in der neuen Datei über 'Inhalte einfügen', 'Alles' angehakt lassen und dann auf die Schaltfläche 'Verknüpfen'. Anschließend evtl. noch mit dem Pinsel die Formate übertragen, falls das Layout nicht passt.
Die neue Datei enthält dann alle gewünschten Felder mit Bezug zu deiner Originaldatei. Deine Kollegen sollten dann nur die neue verwenden. Evtl. legst du dein Original dann in einem Verzeichnis ab, wo nur Du Zugriff hast. Wenn deine Kollegen die dann öffnen, "meckert" Excel zwar wegen der fehlenden Verknüpfungen, schreibt aber normalerweise den letzten bekannten Wert in die Zelle.

Gruß

David


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 09:44:23

Hallo David,

vielen Dank für deinen Tip.
Wenn allerdings die für alle zugängliche Version beim Öffnen "meckert" werde ich mit Anrufen überschüttet.
Es müßte eine komfortabelere Lösung geben.

Danke dir trotzdem!

Gruß Anja


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: David
Geschrieben am: 30.06.2008 10:06:16

Da gäbe es evtl. noch diese Möglichkeit:



Weiß aber nicht genau, ob das immer bei allen funzt. Notfalls könnte man die Meldung auch per Makro unterdrücken...

Oder du machst einfach ein "Deckblatt" in dem kurz steht, warum diese Meldung kommt und dass dies nichts an der Qualität der Daten ändert. Denn egal ob man aktualisieren oder nicht anklickt, die Datei wird auf jeden Fall erst mal geöffnet.

Gruß

David


  

Betrifft: AW: Teilbereich einer Arbeitsmappe speichern von: Anja Bär
Geschrieben am: 30.06.2008 10:48:51

Hallo David,

habe ein kleines super funktionierendes Makro bekommen.

Vielen Dank für deine Hilfe!
Gruß Anja


 

Beiträge aus den Excel-Beispielen zum Thema "Teilbereich einer Arbeitsmappe speichern"