Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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
Inhaltsverzeichnis

Daten kopieren

Daten kopieren
31.01.2022 17:19:47
kurt
Hallo zusammen,
habe gerade Daten gesendet, sind aber nicht zu sehen, deshalb nochmal.
Kann man die Daten kopieren ohne das man die Datenbank öffnen muß ?
Wie kann ich vorher prüfen ob der Name schon in der Datenbank vorhanden ist ?
Der Name steht immer in Zelle C13 und in der "##_Adress_Rechnungs_Datenbank.xlsm" in der Spalte B.

Sub Adresse_in_Rechnungs_Datenbank_kopieren()
Application.ScreenUpdating = False
Dim dn As String
dn = Application.ActiveWorkbook.Name
ActiveSheet.Range("C12:C17").Select
Selection.Copy
ActiveSheet.Unprotect (getStrPasswort)
Windows("##_Adress_Rechnungs_Datenbank.xlsm").Activate
Sheets("Adressen").Select
Dim zz As String
zz = 1
Do While Cells(zz, 1)  ""                 ' Start der Schleife   1=Spalte A
zz = zz + 1                              ' Schleifenzähler um 1 erhöhen
Loop                                        ' Wendepunkt für Schleife
Cells(zz, 1).Select                      ' Zelle selektieren    1=in Spalte A anfang
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(0, 0).Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios _
:=True, Password:=getStrPasswort
Workbooks(dn).Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
Range("C12").Select
End Sub
gruß kurt k

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten kopieren
31.01.2022 18:42:48
Yal
Hallo Kurt,
Kopieren, ohne zu öffnen? Nein. Wenn Du aus der Mappe, die Du Datenbank nennst, lesen würdest, dann könnte man per Formel Daten lesen, ohne die Quelle zu öffnen. Beim Schreiben, ist die Datenbank-Mappe das Ziel. Muss geöffnet werden.
Prüfen, ob eine Wert vorhanden ist, geht es mit der Suche. Was würde dann passieren? der bisherige Eintrag überschreiben?
Dein Coding ist ein BIschen umständlich, aber bis auf einem Punkt ok: nach dem was ich sehe, machst Du einen "Unprotect" auf das Blatt, die Du liest, und dann einen Protect auf das Blatt, wo es reingeschrieben wird. Ist es so gewollt? Hilfsmittel: weise die Blätter zu Variablen. Blätter sind Objekt und müssen mit "Set " einer Variable zugewiesen werden.
es geht so:

Sub Adresse_in_Rechnungs_Datenbank_kopieren()
Dim Qws As Worksheet 'Quell-Worksheet
Dim Zws As Worksheet 'Ziel-Worksheet
Application.ScreenUpdating = False
Set Qws = ActiveSheet
Set Zws = Workbooks("##_Adress_Rechnungs_Datenbank.xlsm").Worksheets("Adressen")
Qws.Range("C12:C17").Copy
Zws.Unprotect (getStrPasswort)
Zws.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Zws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPasswort
Application.CutCopyMode = False
Qws.Activate
Qws.Range("C12").Select
Application.ScreenUpdating = True
End Sub
Mit Suchfunktion sieht es so aus:

Sub Adresse_in_Rechnungs_Datenbank_kopieren()
Dim Qws As Worksheet 'Quell-Worksheet
Dim Zws As Worksheet 'Ziel-Worksheet
Dim ZielZelle As Range
Dim SuchBegriff As String
Application.ScreenUpdating = False
'Worksheet-Variable setzen
Set Qws = ActiveSheet
Set Zws = Workbooks("##_Adress_Rechnungs_Datenbank.xlsm").Worksheets("Adressen")
'Begriff suchen
SuchBegriff = Qws.Range("C12")
Set ZielZelle = Zws.Find(What:=SuchBegriff, After:=Zws.Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
'Suchergebnis prüfen: suchBegriff nicht gefunden: Am Ende Anfügen
If ZielZelle Is Nothing Then
Set ZielZelle = Zws.Range("A99999").End(xlUp).Offset(1, 0)
End If
'Übertragen
Qws.Range("C12:C17").Copy
Zws.Unprotect (getStrPasswort)
ZielZelle.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Zws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPasswort
Application.CutCopyMode = False
Qws.Activate
Qws.Range("C12").Select
Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
AW: Daten kopieren
31.01.2022 19:13:35
kurt
Hallo Yal,
1. Makro läuft aber wie kann man die Datenbank, die in D:\ steht im Makro festlegen.
2. Makro bleibt hier stehen:
Set ZielZelle = Zws.Find(What:=SuchBegriff, After:=Zws.Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
gruß kurt
AW: Daten kopieren
31.01.2022 19:31:41
Yal
Hallo Kurt,
falls die Datei nicht bereits geöffnet ist, muss sie dann geöffnet werden.
Die Such-Funktion wil ein Bereich als Quelle.
Korrigierte Code:

Sub Adresse_in_Rechnungs_Datenbank_kopieren()
Dim Qws As Worksheet 'Quell-Worksheet
Dim Zws As Worksheet 'Ziel-Worksheet
Dim ZielZelle As Range
Dim SuchBegriff As String
Application.ScreenUpdating = False
'Worksheet-Variable setzen
Set Qws = ActiveSheet
Set Zws = Öffnen("D:\xxx\##_Adress_Rechnungs_Datenbank.xlsm").Worksheets("Adressen")
'Begriff suchen
SuchBegriff = Qws.Range("C12")
Set ZielZelle = Zws.Range("A:A").Find(What:=SuchBegriff, After:=Zws.Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
'Suchergebnis prüfen: suchBegriff nicht gefunden: Am Ende Anfügen
If ZielZelle Is Nothing Then
Set ZielZelle = Zws.Range("A99999").End(xlUp).Offset(1, 0)
End If
'übertragen
Qws.Range("C12:C17").Copy
Zws.Unprotect (getStrPasswort)
ZielZelle.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Zws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPasswort
Application.CutCopyMode = False
Qws.Activate
Qws.Range("C12").Select
Application.ScreenUpdating = True
End Sub
Private Function Öffnen(DateiPfad As String) As Workbook
Dim W As Workbook
Dim WBName As String
On Error Resume Next
'setze die Datei falls geöffnet
WBName = Mid(DateiPfad, InStrRev("\", DateiPfad) + 1)
Set W = Workbooks(WBName)
'wenn nicht, öffne diese
If W Is Nothing Then
Set W = Workbooks.Open(DateiPfad)
End If
Set Öffnen = W
End Function
VG
Yal
Anzeige
Danke Yal aber...
31.01.2022 19:49:39
kurt
Hallo Yal,
danke für deine Unterstützung.
Leider kommt Fehlermeldung:
Laufzeitfehler 1004
PasteSpezialMethode des Range-Objektes konnte nicht ausgeführt werden.
ZielZelle.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
gruß kurt k
AW: Danke Yal aber...
31.01.2022 20:03:26
Yal
Tausche die Reihenfogle folgender Einträge:
Von:

Qws.Range("C12:C17").Copy
Zws.Unprotect (getStrPasswort)
In:

Zws.Unprotect (getStrPasswort)
Qws.Range("C12:C17").Copy
VG
Yal
Danke Yal alles SUPER !!!
31.01.2022 20:07:15
kurt
Bitte kleine Nachfrage !
01.02.2022 10:40:22
kurt
Guten Morgen,
es läuft alles GUT !
Aber beim öffnen, wenn die Datei: #_Adress_Rechnungs_Datenbank.xlsm, geschlossen war,
wird die Datei aktiv angezeigt und die ganze kopierte Zeile ist Selectiert.
Sollte nicht sein, sondern die Quelle Workbook sollte immer aktiv bleiben.
In der Zieldatei sollte die 1.Zelle Selectiert sein und nicht die ganze kopierte Zeile.
Herzlichen dank im Voraus
gruß kurt k
Sub Adresse_in_Rechnungs_Datenbank_kopieren()
Dim Qws As Worksheet 'Quell-Worksheet
Dim Zws As Worksheet 'Ziel-Worksheet
Dim ZielZelle As Range
Dim SuchBegriff As String
Application.ScreenUpdating = False
'Worksheet-Variable setzen
Set Qws = ActiveSheet
Set Zws = Öffnen("D:\#_Adress_Rechnungs_Datenbank.xlsm").Worksheets("Adressen") 'Öffnen ist Function
Qws.Activate
'Begriff suchen
' SuchBegriff = Qws.Range("C13")
' Set ZielZelle = Zws.Range("B:B").Find(What:=SuchBegriff, After:=Zws.Range("B3"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
'Suchergebnis prüfen: suchBegriff nicht gefunden: Am Ende Anfügen
If ZielZelle Is Nothing Then
Set ZielZelle = Zws.Range("B99999").End(xlUp).Offset(1, 0)
End If
'übertragen
Zws.Unprotect (getStrPasswort)
Qws.Range("C12:C17").Copy
ZielZelle.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Zws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=getStrPasswort
Application.CutCopyMode = False
Qws.Activate
Qws.Range("C12").Select
Application.ScreenUpdating = True
End Sub

Private Function Öffnen(DateiPfad As String) As Workbook
Dim W As Workbook
Dim WBName As String
On Error Resume Next
'setze die Datei falls geöffnet
WBName = Mid(DateiPfad, InStrRev("\", DateiPfad) + 1)
Set W = Workbooks(WBName)
'wenn nicht, öffne diese
If W Is Nothing Then
Set W = Workbooks.Open(DateiPfad)
End If
Set Öffnen = W
End Function

Anzeige
AW: Bitte kleine Nachfrage !
01.02.2022 10:52:53
Yal
Hallo Kurt,
weisse ich leider nicht, bzw. habe gerade nicht die Zeit zu forschen. Platziere die Frage in einem neuen Beitrag:
Wie kann ich ein Workbook öffnen, ohne dass diese für den Anwender sichtbar ist?
Poste dazu nur die Function Öffnen.
Denk daran, dass Du das Workbook anschliessend speichern und schliessen musst.
VG
Yal
Habe die Lösung gefunden, danke ! -)
01.02.2022 11:42:57
kurt
Anbei zur Info:

Private Function Öffnen(DateiPfad As String) As Workbook
Dim W As Workbook
Dim WBName As String
On Error Resume Next
'---- meine Idee dn ---------------
Dim dn As String
dn = ThisWorkbook.Name
'setze die Datei falls geöffnet
WBName = Mid(DateiPfad, InStrRev("\", DateiPfad) + 1)
Set W = Workbooks(WBName)
'wenn nicht, öffne diese
If W Is Nothing Then
Set W = Workbooks.Open(DateiPfad)
End If
Set Öffnen = W
Workbooks(dn).Activate
End Function
gruß kurt k
Anzeige
sehr gut
01.02.2022 13:09:05
Yal
... aber ich würde diese Aktion in der Haupt-Sub platzieren, weil es mit der Aktion "Öffnen oder prüfen, ob geöffnet" an sich nicht zu tun hat.
Also am Ende vom Block kannst Du sogar Qws verwenden:

'Worksheet-Variable setzen
Set Qws = ActiveSheet
Set Zws = Öffnen("D:\xxx\##_Adress_Rechnungs_Datenbank.xlsm").Worksheets("Adressen")
Qws.Activate
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige