Thema Datum  Von Nutzer Rating
Antwort
02.07.2021 17:08:23 Barti
NotSolved
02.07.2021 21:22:23 Gast42896
NotSolved
02.07.2021 21:38:42 Gast63377
NotSolved
05.07.2021 14:15:39 Barti
NotSolved
Rot Mit Makro nur Werte und Formate von einer Datei in eine andere Datei kopieren
06.07.2021 13:57:28 Gast5609
****
Solved
12.07.2021 10:26:56 Gast55012
NotSolved
08.09.2021 13:56:52 Barti
NotSolved

Ansicht des Beitrags:
Von:
Gast5609
Datum:
06.07.2021 13:57:28
Views:
467
Rating: Antwort:
 Nein
Thema:
Mit Makro nur Werte und Formate von einer Datei in eine andere Datei kopieren

Hallo Barti,

damit solltest Du weiter kommen, wenn ich es richtig verstanden habe. Wie das mit dem Datei öffnen auf der NextCloud ist kann ich allerdings nicht sagen, da ich die nicht kenne. Ich lese nur öfter Fragen, weil Dateien in der OneCloud usw. nicht richtig angesprochen werden. Probiere es einfach aus:

Sub Chronik_Aktualisieren()

'Variablen werden bei Verwendung ausführlich erklärt
Dim pfadKollegenDateien As String
Dim chronikTabelle As Worksheet
Dim letzteZeileHauptChronik As Long
Dim kollegenDateien(4) As Variant
Dim aktuelleKollegenDatei As Variant
Dim letzteZeileKollegenDatei As Long

  'Da es nur 5 Dateien sind, schreib die Pfade inklusive Namen einfach alle in ein Array
  kollegenDateien(0) = "PfadZuDatei1\Dateiname1.xls"
  kollegenDateien(1) = "PfadZuDatei2\Dateiname2.xls"
  kollegenDateien(2) = "PfadZuDatei3\Dateiname3.xls"
  kollegenDateien(3) = "PfadZuDatei4\Dateiname4.xls"
  kollegenDateien(4) = "PfadZuDatei5\Dateiname5.xls"
  
  'Bei der Arbeit mit mehreren Dateien immer vollständig referenzieren
  'Also auf die Excel-Datei und die gewünschte Tabelle darin
  '
  'Ein Grund ist, dass Activate und Select komplett weggelassen werden
  'können: Das macht das Programmieren wesentlich übersichtlicher und die
  'Qualität des Quellcodes wesentlich besser, weil weniger Code nötig ist
  '
  'Ein weiterer Grund ist, man kann sich sonst sehr schnell sehr blöde
  'Fehler einhandeln, weil in der falschen Tabelle der falschen Datei
  'gearbeitet wird oder ein angegebener Tabellenname nicht gefunden wird,
  'weil er in der falschen Datei gesucht wird
  '
  'Braucht man nur eine Tabelle, die in in einer Excel-Datei liegt,
  'kann man das machen, indem die Referenz auf die Arbeitsmappe einfach
  'vorangestellt wird
  '(Beachte: Workbooks und Sheets sind Objekte. Deshalb muss die
  ' Variablen-Zuweisung mit Set erfolgen)
  Set chronikTabelle = Workbooks("Projektauswertung.xls").Sheets("Chronik")
  
  'Rausfinden der letzten belegten Zeile in der Arbeits-Tabelle
  'Die letzte belgte Zelle wird in Spalte A nachgesehen
  'Für z.B. Spalte D würde man statt (Rows.Count, 1),
  '(Rows.Count, 4) schreiben
  'Mehr infos und andere Möglichkeiten zum feststellen der letzten belegten Zeile oder Spalte:
  'https://www.excel-inside.de/vba-loesungen/zellen-a-bereiche/337-letzte-zeile-letzte-spalte-und-letzte-zelle-per-vba-ermitteln
  letzteZeileHauptChronik = chronikTabelle.Cells(Rows.Count, 1).End(xlUp).Row
  
  'Löschen von alten Daten
  'Nie pauschal alle möglichen Zeilen einer Tabelle bearbeiten
  'Es ist besser, genau den gewünschten Bereich zu definieren
  'Beachte, dass hier die oben angelegte Referenz auf die Tabelle
  'verwendet wird
  'Der Zusatz shift:=xlUp "zieht" den unter dem Löschbereich liegenden
  'Bereich nach oben. Die andere Möglichkeit ist von rechts nach links
  'Ich weiß aber nicht was default ist
  chronikTabelle.Range("A2", "K" & letzteZeileHauptChronik).Delete shift:=xlUp
  
  'Chroniken der Kollegen kopieren
  'Da gehen wir die oben im Array abgelegten Dateien in einer Schleife durch
  'In Schleifen werden Aufgaben programmiert, die immer gleich sind
  For Each aktuelleKollegenDatei In kollegenDateien
    'Kollegendatei öffnen, aus dem oben definierten Pfad
    '(Diese Datei hat jetzt den Fokus, ist also die eigentlich aktive Datei
    ' Da wir aber mit vollständigen Referenzen auf alle Tabellen arbeiten,
    ' brauchen wir uns darum keine Gedanken machen)
    Workbooks.Open aktuelleKollegenDatei
    
    'Der Übersicht halber und um den Code zu verkürzen, beziehen
    'wir alles was im Folgenden mit Punkt (.) beginnt, auf die
    'Kollegen-Datei und die Chronik-Tabelle darin
    With Workbooks(aktuelleKollegenDatei).Sheets("Chronik")
      'Die letzte Zeile in der Kollegen-Tabelle feststellen
      letzteZeileKollegenDatei = .Cells(Rows.Count, 1).End(xlUp).Row
      'Erste freie Zeile in der Sammel-Tabelle feststellen
      'Dazu auf das + 1 am Ende achten
      letzteZeileHauptChronik = chronikTabelle.Cells(Rows.Count, 1).End(xlUp).Row + 1
      
      'Daten kopieren
      .Range(Cells(2, 1), Cells(letzteZeileKollegenDatei, 11)).Copy
      
      'Nur Werte in die Sammel-Datei einfügen
      chronikTabelle.Range(Cells(letzteZeileHauptChronik, 1), _
          Cells(letzteZeileHauptChronik + letzteZeileKollegenDatei - 1, 11)).PasteSpecial Paste:=xlValues
       
      'Nur Formate einfügen
      chronikTabelle.Range(Cells(letzteZeileHauptChronik, 1), _
          Cells(letzteZeileHauptChronik + letzteZeileKollegenDatei - 1, 11)).PasteSpecial Paste:=xlPasteFormats
    
    'Den Bezug auf die Tabelle Chronik in der Kollegen-Datei beenden
    End With
    
    'Geöffnete Kollegen-Datei schließen ohne zu speichern
    Workbooks(aktuelleKollegenDatei).Close SaveChanges:=False
  'Nächste Datei
  Next aktuelleKollegenDatei
End Sub

Viele Grüße,

Zwenn


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
02.07.2021 17:08:23 Barti
NotSolved
02.07.2021 21:22:23 Gast42896
NotSolved
02.07.2021 21:38:42 Gast63377
NotSolved
05.07.2021 14:15:39 Barti
NotSolved
Rot Mit Makro nur Werte und Formate von einer Datei in eine andere Datei kopieren
06.07.2021 13:57:28 Gast5609
****
Solved
12.07.2021 10:26:56 Gast55012
NotSolved
08.09.2021 13:56:52 Barti
NotSolved