Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenblatt aus einer Arbeitsmappe speichern
#1
Hallo,

aus einer umfangreichen Arbeitsmappe eines Abrechnungsprogrammes sollen bestimmte Tabellenblätter ohne die Formeln und den hinterlegten VBA-Code als einzelnen Datei mit einem neuen Namen abgespeichert werden. Da es sich dab ei ua. um Formulare handelt und diese verbundene Zellen beinhalten, die nicht geändert werden können (sollen), "stirbt" mein Code immer bei der Zeile .Cells(1).PasteSpecial xlValue mit dem Hinweis, das verbundene Zellen die gleiche Größe haben müssen, ab.
Was muss ich ändern / beachten oder ist der Code völlig falsch und muss ganz anders aussehen:

Code:
Sub Tabelle_aus_Mappe_kopieren()
   Dim wsQuelle As Worksheet
   Dim WbZiel As Workbook

   Dim LW As String
   Dim Info As Date
   Dim Beleg As String
   LW = "I"
   Info = Date
   Beleg = "Abrechnung"
  
    Set wsQuelle = ActiveSheet
    Application.SheetsInNewWorkbook = 1
    Set wbZiel = Workbooks.Add
    wsQuelle.Copy
    With wbZiel.Sheets(1)
        .Name = wsQuelle.Name
    '    .Cells(1).PasteSpecial xlFormats
    '    .Cells(1).PasteSpecial xlValues
         .Cells(1).Select
    End With
    Set wbZiel = ActiveWorkbook
    wbZiel.Close True, LW & ":\" & Info & "-" & Beleg & ".xls"
    If wbZiel Is ActiveWorkbook Then wbZiel.Close False
End Sup
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#2
Hallo,

da ich die Datei nicht nachbauen kann, hier nur eine Überlegung

In den Sheets, die separat gespeichert werden sollen, alles markieren, copy/paste value, danach mit Sheets(i).copy dieses Sheet in eine neue Datei bringen und dort abspeichern. Die Ursprungsdatei OHNE speichern schließen.

Das kann man von Hand testen und wenn es klappt auch mit einem einfachen vba-Code erledigen.

mfg
Antworten Top
#3
Hallo Günter,
Bin nur am Smartphone, daher auch nur Theorie. Ich würde mit savecopyas oder ähnlicher Verfahrensweise den Code entfernen und mit cells.value=cells.value dann die Formeln.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo Fennek,

genau was du überlegt hast, macht eigentlich der von mir vorgestellte (und oft benutzte) Code, nur in diesem Projekt scheitert er (angeblich) an den verbundenen Zellen. Einach it Copy und Paste zu arbeiten geht nicht, weil dann der hinterlegte VBA-Code mit übernommen wird und da der ein Activate-Ereignis hat, welches dann keine Bezüge aus dem Tabellenblatt zur Hauptdatei findet, endet das Ganze im Chaos!

Hallo André,

leider geht das auch nicht so einfach, den es werden eine Reihe von Abrechnungs- und Nachwiestabellenblätter im Laufe des Projektes erstellt, die jeweils gesondert ausgedruckt und auf einem nur einmal beschreibbarem Speichermedium abgespeichert werden müssen (will das Finanzamt so!).

Vielleicht hat mein Code zu diesem Zweck nur einen kleinen "Haken" und ich finde den nur nicht?
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#5
Hallo,

hier noch einmal eine getestete (Teil-)Version.

In der angehängten Datei sind verbundene Zellen und Formeln enthalten.

Der folgende Code in einem anderer Sheet erfüllt m.E. die Anforderungen (c:\temp muss existieren und "Glaudius Bsp.xlsx" geöffnet sein)


Code:
Sub Glaudius()
Dim WB As Workbook
Set WB = Workbooks("Glaudius Bsp.xlsx")
With WB.Sheets("QWE")
.UsedRange.Value = .UsedRange.Value
.SaveAs "c:\temp\Glaudius.xlsx"
End With
WB.Close 0
End Sub
Falls es Makros in der Originaldatei gibt, werden diese automatisch durch das Format "*.xlsx" entfernt.
mfg


Angehängte Dateien
.xlsx   Glaudius Bsp.xlsx (Größe: 10,09 KB / Downloads: 1)
Antworten Top
#6
Hallo,
(14.07.2016, 16:19)Fennek schrieb: Falls es Makros in der Originaldatei gibt, werden diese automatisch durch das Format "*.xlsx" entfernt.

Günter möchte aber als .xls abspeichern. Wink

Gruß Uwe
Antworten Top
#7
Hi Günter,


Zitat:aus einer umfangreichen Arbeitsmappe eines Abrechnungsprogrammes sollen bestimmte Tabellenblätter ohne die Formeln und den hinterlegten VBA-Code als einzelnen Datei mit einem neuen Namen abgespeichert werden.

musst du das als .xls abspeichern oder kannst du auch das PDF-Format benutzen? Falls das zweite zutrifft, musst du nur das entsprechende Blatt aktivieren und unter "Datei==> Speichern unter" einen neuen Namen vergeben und als Dateityp PDF angeben. Es wird nur das aktive Blatt abgespeichert.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#8
Hallo Günter,
Eventuell geht wbziel.sheets(1).cells.value=wsquelle.cells.value? Eventuell auch auf den benutzten Bereich beschränkt.
Oder vor dem Kopieren die verbundene(n) Zelle(n) auflösen und hinterher wieder setzen.
@all das mit dem Format xlsx / xls würde auch gehen, wenn man 2x speichert. Z.B. erst die xlsx ins temp und diese dann als xls an den Zielort. Anschließend die xlsx löschen. Aber das ist ja inzwischen ot.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste