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.

Exel Hauptarbeitsmappe mit mehreren Arbeitsmappen synchronisieren
#11
HEUREKKKKAAAAAAAAAAAA!!!!!!!:)

Danke Andre!!!!!!!

Erstmal sorry, dass ich den Fehler nicht klar definiert habe... 

Also er hat immer Fehler mit dem Befehl

Range(.Cells(i, 2)).Value = Application.Transpose(wsBeschauauftrag.Range("B9").Value) gehabt,

dein Vorschlag mit
.Cells(i, 2)

hat funktioniert!!!!

Jetzt konnte ich den Inhalt von einer Arbeitsmappe in die andere bekommen:)

Du sagtest, dass es nicht nötig ist eine Zelle zu Transportieren. Ich habe die Befehle ja nun sagen wir mal "geborgt" von anderen Foreneinträgen,
deshalb nun meine Frage, dieser Befehl "transportiert" die Zelle von einem Arbeitsblatt in das andere? Also von meier Quelle in die Datenbank? Hier wird sicher mehr Rechenleistung gebraucht als beim Kopieren, oder?
 
Mir würde ein einfaches Kopieren vollkommen ausreichen, kannst du mir sagen, wie dann der Befehl dafür lauten würde?

Sorry, ihr denkt euch gerade bestimmt sowas wie lerne erstmal krabbeln bevor du gehen willst, ich habe halt echt keinerlei Erfahrungen mit solchen arbeiten....

Danke für die Hilfe!!!!!
Antworten Top
#12
Ich nochmal, also mit dem VBA Rekorder habe ich jetzt etwas rumprobiert und folgendes erreicht:

Range("C10").Select
    Selection.Copy
    Windows("test.xlsx").Activate
    .Cells(i, 2).Select
    ActiveSheet.Paste
    Windows("quelle.xlsm").Activate

Für mich zum Verständnis, mit .Cells(i,2) sage ich ihm doch jetzt, kopiere das in:

i=die letzte freie zeile (durch den Befehl davor definiert) in die 2 Spalte (B), richtig?

Nun habe ich aber leider das Problem, dass er sich anscheind den Wert der Zelle C10 merkt und diesen einfach immer wieder in die Datenbank kopiert :(

Ich habe also z.B. in "C10" der Quelle den wert 100 stehen, das kopiert er dann brav rüber....wenn ich jetzt nochmal den befehl ausführe, kopiert er den wert 100 auch in die nächste Freie Zelle....soweit so gut, wenn ich den Wert jetzt aber ändere, sagen wir auf 110 unnd den Befehl ausführe, dann kopiert er wieder den Wert 100 in die Datenbank :(

Aber es ging gerade auf jeden Fall schneller!!!

Dankeschön!!!
Antworten Top
#13
Hallöchen,

wenn Du 100x C10 kopierst:
Range("C10").Select
Selection.Copy

wirst Du auch 100x C10 bekommen Smile
Du müsstest auch die Quelle variabel gestalten. Die Frage ist nur, wie / woher Du die Daten schaufelst.

Wenn Du C10:C100 kopieren willst und in .Cells(i,2) einfügst und das untereinander stehen soll, geht das in einem Rutsch.

Range(C10:C100).Copy
.Cells(i,2).Paste...

Wenn Du C10:CV10 kopieren willst und in .Cells(i,2) einfügst und das untereinander stehen soll, geht das auch in einem Rutsch.
Hier würde dann Transpose dazu passen wie in Deinem geposteten Code

Wenn Du verschiedene Zelen kopieren willst und in Spalte B immer untereinander einfügen, dann musst Du zwischendurch auch immer wieder die letzte Zelle feststellen.

Wenn Du …


Du merkst schon, da fehlt eine konkrete Aufgabe zum Antworten …
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Newby81
Antworten Top
#14
Hallo Andre, 

nochmal Danke das du dir die Zeit nimmst!

Die Aufgabe sieht konkret so aus: Ich möchte in meiner Quelle in die Zelle xy (sagen wir Mal c10) einen Wert eingeben, manuel. Dann habe ich mir einen shortcut eingerichtet mit dem ich das marko starte. Jetzt soll der eingegebene Wert in die Datenbank kopiert werden, hier in die nächste freie Zelle der Spalte B.... Das haben wir ja durch i definiert. 

Jetzt möchte ich später die Datei Quelle ganz normal azsrucken und gebe jetzt eine neue Nummer Manuel in die Quelle c10 ein, wieder durch shortcut drücken soll jetzt der neue wert in die Datenbank kopiert werden. Quelle wieder ausdrucken, c10 in der Quelle ändern, kopieren und immer so weiter....

Momentan kopiert er den ersten wert den ich eingebe schon rüber, wenn ich den Wert der Zelle ändere dann wird dieser neue wert aber nicht beachtet....

Ich hoffe du verstehst das Problem.... Also doch eher die Zellen transportierent oder stelle ich mich einfach mal wieder zu doof an beim kopierbefehl?

Danke für deine Mühen!

Grus

Torben
Antworten Top
#15
Hallo Torben,

wenn das so ist, dann ist alles richtig, zumindest, wenn Du vor dem zuletzt geposteten Codeschnipsel auch noch die erste freie Zelle feststellst.
Hattest Du zuvor schon mal irgendwo gepostet.

'freie Zeile finden
i = .Cells(Rows.Count, 2).End(xlUp).Row + 1

Falls nicht, dann z.B. so

Range("C10").Select
Selection.Copy
Windows("test.xlsx").Activate
i = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 2).Select
ActiveSheet.Paste
Windows("quelle.xlsm").Activate

wobei man das mit dem Select noch etwas einkürzen könnte... Ob die Punkte vor .Cells korrekt sind, kann ich allerdings anhand
des kurzen Schnipsels nicht feststellen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Newby81
Antworten Top
#16
Hallo Andre,

vielen vielen Dank nochmal bis hier :) Ich habe den Befehl jetzt glaube ich einigermassen hin bekommen, zumindest kopiert er das jetzt alle brav ;)

Kannst du nochmal einen Blick darauf werfen?

'Pfad zur Masterdatei festlegen:
Const MasterDat As String = "C:\Users\test.xlsx"

Dim wsBeschauauftrag As Worksheet
Dim wstest As Worksheet
Dim lngZeile As Long, rngTmp As Range


'Festlegen aus welchem Tabellenblatt die Daten kopiert werden sollen
   Set wsBeschauauftrag = ActiveSheet


'Masterdatei öffnen
   Set wsMasterTab = Workbooks.Open(MasterDat).Worksheets("tabelle1") 

'Daten übernehmen
   With wsMasterTab
      
      
    'Daten kopieren

    Windows("quelle.xlsm").Activate
    Range("B10").Select
Selection.Copy
Windows("test.xlsx").Activate
i = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 2).Select
ActiveSheet.Paste
Windows("quelle.xlsm").Activate
     
      
   End With

'Masterdatei speichern und schließen
   wsMasterTab.Parent.Close savechanges:=True


Set wsMasterTab = Nothing
Set wsQuelle = Nothing
Set i = Nothing

End Sub



Soweit so gut:) Jetzt wollte ich gerne nur die Werte der Zelle B10 kopieren, also ohne Format und Formeln.... ich habe den Befehl dann so geschrieben:

Windows("quelle.xlsm").Activate
    Range("B10").Select
Selection.Copy
Windows("test.xlsx").Activate
i = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Cells(i, 2).Select
ActiveSheet.PasteSpecial xlPasteValues
Windows("quelle.xlsm").Activate


Leider klappt das nicht....die Pastspecial Methode konnte nicht ausgeführt werden.... Nehme ich einen falschen Befehl???

Danke für euer Backup!!!!!!

Gruß

Torben
Antworten Top
#17
HI Torben,

versuch's mal so:

Selection.PasteSpecial Paste:=xlPasteValues
.      \\\|///      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