1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo an Alle,

ich habe ein VBA-Problem und hoffe, dass mir jemand von euch behilflich sein kann.

Ich habe in Excel ein Formualr erstellt, in dem ich einige Zellen verbunden habe. Ich möchte nun, mittels VBA-Code und einem Button die in diesem Formular eingetragenen Daten in ein neues Excel-File übertragen.
Die Zellen U-V und W-AF wurden verbunden. Hier soll ein Text eingetragen werden wofür ebenfalls immer 3 Zellen noch verbunden wurden (Verbund somit W-AF, Zelle 12-15). Zelle AG ist dann wieder einzeln, die Zellen AH und AI sind wieder verbunden, AJ - AL sowie AM - AO ebenfalls und dann nooch AP-AS und AT -AU. In diese Zellen sollen Werte eingetragen werden. Die verbunden Zellen sind somit unterschiedlich lang und ihr Inhalt ebenfalls unterschiedlich. Per Button sollen diese Texte und Werte der Zellen nun in ein neues Excel-File in dem dann eine Gesamtübersicht aller Formkulare entsteht mit den entsprechenden Werten. Dieses Excel-File sollte automatisch schreibgeschützt sein, damit Werte die neu hinzu kommen nicht mehr so einfach geändert werden können. Ggf. sollte dies aber nachträglich noch möglich sein. Ist soetwas in VBA möglich?

4 Antworten

0 Punkte
Beantwortet von
Kleiner Zusatz:

Ich denke ich kann mir soweit helfen, dass die Daten aus den verbundenen Zellen in ein neues arbeitsblatt übertragen werden mit normalen zellen (B-H). Trotzdem habe ich jetzt noch das Problem, dass diese Daten ja per Button in ein neues Excel File übertragen werden sollen und dass die Daten in diesem neuen Excel-File auch dann stehen sollen (untereinander je neuem Eintrag) wenn das erste File gelöscht wurde bzw. die Daten sich in dem ersten File ändern. Langer rede, da wo die Daten eingegeben werden sollen sie verändertbar sein, wenn man auf den Button klickt, sollen die Daten in der neuen Datei allerdings fest sein (also Werte)

Ich hoffe ich habe mich nicht all zu kompliziert ausgedrückt und jmd kann mir Anfänger helfen.

Gruß
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

verbundene Zellen und VBA passen gar nicht zusammen, zumal der Text immer in der ersten Zelle des verbundenen Bereichs steht und somit eigentlich nur zur Formatierung bei Ausdrucken gebraucht wird.
Also schau mal, ob du die verbundenen Zellen wirklich brauchst (Zeilenbreite und -höhe lassen sich - inklusive Zeilenumbruch - auch formatieren).

Hier mal ein einfaches Beispiel zum Kopieren von einem Zellinhalt von einer Datei in eine andere Datei. Der kopierte Datensatz wird immer am Ende eingefügt und es werden die Werte kopiert. Wie lang der Inhalt der Zellen spielt keine Rolle.

Sub Beispiel()

Dim zeile As Long

'letzte Zeile in Zielmappe ermitteln und um 1 erhöhen
zeile = Workbooks("Mappe2").Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1

'Inhalt von W1 aus Mappe1 - Tabelle1 wird nach Spalte A in Mappe2 - Tabelle 1 kopiert
Workbooks("Mappe2").Sheets("Tabelle1").Cells(zeile, 1) = Workbooks("Mappe1").Sheets("Tabelle1").Range("W1").Value

End Sub



Den Code musst du in ein Standardmodul einfügen. Damit kannst du schon ein bisschen herumprobieren. Die Namen der Arbeitsmappen und Tabellen musst du natürlich noch auf deine Bedürfnisse anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi Mockelele,

ich bin jetzt nicht so der VBA'ler. Nachstehenden Code habe ich aufgezeichnet.
Er macht folgendes: Er kopiert den Bereich U12 bis AU15 und öffnet anschliessend das Excelfile Zielfile.xls, das
sich im Pfad: C:\Test\ befindet. Hier fügt er dann die Daten in A1 ein und fügt dann oberhalb noch einmal 4 Leerzellen mit der benötigten Formatierung ein. Das ist ein Umweg, weil ich nicht weiß, wie man die nächste freie Zeile ermitteln kann. Du hast also dann immer die letzten Daten ganz oben stehen, nach unten werden die Daten älter. Ich bin jetzt davon ausgegangen, daß die verbundenen Zellen auch in der Zieldatei verbunden sein sollen.
Den Code kannst du kopieren und in deiner Datei in ein Standardmodul einfügen. Bau Dir halt eine Testdatei nach den Gegebenheiten nach. Also auf C einen Ordner Test und dann eine Datei Zielfile.xls, aber beachten je nach Version evtl. Zielfile.xlsx . Das musst du auch im Code ändern. Wenn das deinen Vorstellungen entspricht, dann kann der Schutz sicherlich auch noch eingebaut werden.



Sub insZiel()

Range("U12:AU15").Select
Selection.Copy
Workbooks.Open Filename:= _ "C:\Testt\Zielfile.xls"
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Rows("1:4").Select
Selection.Copy
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Selection.ClearContents
Range("A1:B4").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub


CU Aliba
0 Punkte
Beantwortet von
Hey,

vielen Dank für eure Hilfe!!!
...