Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Script für Einfügen in andere Datei anpassen

Script für Einfügen in andere Datei anpassen
17.07.2006 17:41:40
Nicole
Hallo !
brauche Hilfe bei folgendem Makro
Dieses Makro übernimmt mir die Daten immer aus der Zeile
in der gerade eine Zelle aktiv ist und fügt sie mir
im Blatt Rechnung in die erste freie Zeile ein. das klappt auch ganz gut.
Nun möchte ich aber das die Daten in eine andere gerade geöffnete Datei
die auch immer einen anderen Namen hat so wie beschrieben in das Blatt Rechnung
eingefügt wird, wie gesagt die Datei in die eingefügt wird ist immer eine gerade geöffnete
Datei.
Kann mir da jemand helfen ?

Sub inTabelleeinfuegenCurrent()
Dim shTarget As Worksheet
Dim intRow As Integer, i As Integer
Set shTarget = Worksheets("Rechnung")
intRow = shTarget.Range("A1").CurrentRegion.Rows.Count
Rows(ActiveCell.Row).Copy shTarget.Rows(intRow + 1)
Application.CutCopyMode = False
'Cancel = True
End Sub

Gruß Nicole

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Script für Einfügen in andere Datei anpassen
18.07.2006 02:50:03
fcs
Hallo Nicole,
mit folgenden Anpassungen kannst du die selektierte Reihe in das Blatt "Rechnung" einer anderen geöffneten Datei kopieren.
Die andere Datei kannst du am einfachsten festlegen, indem du sie per Makro öffnest.
Dabei wird die als Public deklarierte Variable = der geöffneten Datei gesetzt.
Alternativ kann du die Zieldatei auch in Excel aktivieren/selektieren und das 2. Makro starten. Dabei wird die als Public deklarierte Variable = der aktiven Datei gesetzt.
Gruß
Franz

Public wbRechnung As Workbook
Sub RechnungsDatei_Oeffen()
' selektiert die geöffnetete Arbeitsmappe für Makro "inTabelleeinfuegenCurrent"
If Application.Dialogs(xlDialogOpen).Show = False Then Exit Sub
Set wbRechnung = ActiveWorkbook
End Sub
'oder
Sub RechnungsDatei_Setzen()
' selektiert aktive Arbeitsmappe für Makro "inTabelleeinfuegenCurrent"
Set wbRechnung = ActiveWorkbook
End Sub
Sub inTabelleeinfuegenCurrent()
If wbRechnung Is Nothing Then
MsgBox "Es wurde noch keine Rechnungsdatei per Makro gewählt!"
Exit Sub
End If
Dim shTarget As Worksheet
Dim intRow As Integer, i As Integer
Set shTarget = wbRechnung.Worksheets("Rechnung")
intRow = shTarget.Range("A1").CurrentRegion.Rows.Count
Rows(ActiveCell.Row).Copy shTarget.Rows(intRow + 1)
Application.CutCopyMode = False
'Cancel = True
End Sub

Anzeige
AW: Super, aber bitte kleine Abänderung
18.07.2006 13:34:06
Nicole
Hallo Franz
Funktioniert Super. Vielen Dank
Ich hätte da noch eine kleine Bitte.
Ist es wohl möglich, daß zwar die Zellformate
übernommen werden, wie es ja bereits geschieht,aber
keine Formeln. Also Zellen in denen Werte durch
Formeln erzeugt werden werden hier nicht übernommen.
Kannst Du da vielleich noch helfen.
Danke im Voraus
Gruß Nicole
AW: Super, aber bitte kleine Abänderung
18.07.2006 15:10:17
fcs
Hallo Nicole,
ich habe mal zwei Varianten gebastelt.
Die erste kopiert Formate und Werte aller Zellen
Die zweite kopiert die Formate und überträgt Werte aus Zellen ohne Formel
Gruß
Franz

'Kopiert Formate und Werte der aktiven Zeile ins andere Blatt
Sub inTabelleeinfuegenCurrent()
If wbRechnung Is Nothing Then
MsgBox "Es wurde noch keine Rechnungsdatei per Makro gewählt!"
Exit Sub
End If
Dim shTarget As Worksheet
Dim intRow As Integer, i As Integer
Set shTarget = wbRechnung.Worksheets("Rechnung")
intRow = shTarget.Range("A1").CurrentRegion.Rows.Count
Rows(ActiveCell.Row).Copy
shTarget.Rows(intRow + 1).PasteSpecial Paste:=xlFormats
shTarget.Rows(intRow + 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
'Cancel = True
End Sub
'Kopiert Formate der aktiven Zeile und Werte aus Zellen ohne Formel ins andere Blatt
Sub inTabelleeinfuegenCurrentNeu()
If wbRechnung Is Nothing Then
MsgBox "Es wurde noch keine Rechnungsdatei per Makro gewählt!"
Exit Sub
End If
Dim shTarget As Worksheet, rngZeile As Range, Zelle As Range
Dim intRow As Integer, i As Integer
Set shTarget = wbRechnung.Worksheets("Rechnung")
intRow = shTarget.Range("A1").CurrentRegion.Rows.Count
Set rngZeile = Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1))
rngZeile.Copy
shTarget.Rows(intRow + 1).PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
'Werte aus Zellen ohne Formel übertragen
For Each Zelle In rngZeile
If Zelle.HasFormula = False Then
shTarget.Cells(intRow + 1, Zelle.Column) = Zelle.Value
End If
If Zelle.Column > (shTarget.UsedRange.Column + shTarget.UsedRange.Columns.Count) Then Exit For
Next
'Cancel = True
End Sub

Anzeige
AW: Super, aber bitte kleine Abänderung
18.07.2006 16:29:32
Nicole
Hallo Franz !
Variante 1 ist genau richtig. Jetzt kann ich
Meine Artikeldaten endlich auslagern und die Datei
verkleinert sich.
Vielen Dank.
Da ich hier gerade so einen Experten in VBA gefunden habe.
Vielleicht noch eine kleine Frage zu dem Script, wenn es nicht zuviel
des Guten ist.
Kann man auch beim Kopieren Die Daten aus der jeweiligen Spalt J in
Spalte F übernehmen und die Daten aus Spalte K in G ?
Dann bräuchte ich auch nicht immer gewisse Zeilen ausblenden.
Falls es nicht geht Trotzdem schonmal Viele Dank für deine nicht
selbsverständliche Hilfe, hast mir sehr geholfen, echt super.
Gruß Nicole
Anzeige
AW: Super, aber bitte kleine Abänderung
18.07.2006 21:33:17
fcs
Hallo Nicole,
es ist mit geringem Mehraufwand auch möglich einzelne Bereiche einer Zeile in die andere Arbeitsmappe zu kopieren. Hier die notwendigen Anpassungen:

Sub inTabelleeinfuegenCurrent()
If wbRechnung Is Nothing Then
MsgBox "Es wurde noch keine Rechnungsdatei per Makro gewählt!"
Exit Sub
End If
Dim shTarget As Worksheet, rngZellen As Range
Dim intRow As Integer, i As Integer
Set shTarget = wbRechnung.Worksheets("Rechnung")
intRow = shTarget.Range("A1").CurrentRegion.Rows.Count
Application.ScreenUpdating = False
'Aktuelle Zeile, Spalten A(1) bis E (5) kopieren
Set rngZellen = Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 5))
rngZellen.Copy
shTarget.Cells(intRow + 1, 1).PasteSpecial Paste:=xlFormats
shTarget.Range(shTarget.Cells(intRow + 1, 1), shTarget.Cells(intRow + 1, 5)).Value = rngZellen.Value
'Aktuelle Zeile, Spalten J(10) bis K (11) kopieren nach Spalten F(6) und G(7)
Set rngZellen = Range(Cells(ActiveCell.Row, 10), Cells(ActiveCell.Row, 11))
rngZellen.Copy
shTarget.Cells(intRow + 1, 6).PasteSpecial Paste:=xlFormats
shTarget.Range(shTarget.Cells(intRow + 1, 6), shTarget.Cells(intRow + 1, 7)).Value = rngZellen.Value
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

gruss Franz
Anzeige
AW: Super, aber bitte kleine Abänderung
19.07.2006 00:22:44
Nicole
Hallo Franz !
Super auch das klappt.
Ich trau mich schon garnicht mehr zu Fragen, aber da ich
dieses Script so vielfältig einsetzen kann noch folgendes:
Die Daten in jede 5. Zeile eintragen lassen.
Wäre auch das noch machbar ?
Dann wars das aber auch versprochen ;-)
Gruß Nicole
AW: Super, aber bitte kleine Abänderung
19.07.2006 14:48:35
fcs
Hallo Nicole,
mit ein paar weiteren Anpassungen geht auch dies. Insbesondere muss dann die letzte mit Daten ausgefüllte Zeile anders ermittelt werden.
mfg
Franz

Sub inTabelleeinfuegenCurrent()
If wbRechnung Is Nothing Then
MsgBox "Es wurde noch keine Rechnungsdatei per Makro gewählt!"
Exit Sub
End If
Dim shTarget As Worksheet, rngZellen As Range
Dim intRow As Integer, i As Integer, intLZ As Integer
Set shTarget = wbRechnung.Worksheets("Rechnung")
intLZ = 4 'Anzahl Leerzeilen zwischen den kopierten Einträgen
'Letzte ausgefüllte Zeile in Spalten A bis G ermitteln
For i = 1 To 7
intRow = Application.WorksheetFunction.Max(intRow, shTarget.Cells(shTarget.Rows.Count, i).End(xlUp).Row)
Next
Application.ScreenUpdating = False
'Aktuelle Zeile, Spalten A(1) bis E (5) kopieren
Set rngZellen = Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 5))
rngZellen.Copy
shTarget.Cells(intRow + intLZ + 1, 1).PasteSpecial Paste:=xlFormats
shTarget.Range(shTarget.Cells(intRow + intLZ + 1, 1), shTarget.Cells(intRow + intLZ + 1, 5)).Value = rngZellen.Value
'Aktuelle Zeile, Spalten J(10) bis K (11) kopieren nach Spalten F(6) und G(7)
Set rngZellen = Range(Cells(ActiveCell.Row, 10), Cells(ActiveCell.Row, 11))
rngZellen.Copy
shTarget.Cells(intRow + intLZ + 1, 6).PasteSpecial Paste:=xlFormats
shTarget.Range(shTarget.Cells(intRow + intLZ + 1, 6), shTarget.Cells(intRow + intLZ + 1, 7)).Value = rngZellen.Value
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Alternative zur Ermittlung der letzten Zeile mit Daten/formatierten Zellen:
intRow = shTarget.UsedRange.Row + shTarget.UsedRange.Rows.Count - 1

Anzeige
AW: : -)) Vielen Dank
19.07.2006 17:07:14
Nicole
Hallo Franz !
Vielen Dank, für die intensive Mühe
klappt alles wunderbar !!
Gruß Nicole

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige