Clever-Excel-Forum

Normale Version: VBA in andere Datei schreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Ich habe in Datei X eine UserForm, wo ich daten eingebe und diese entsprechend in Datei X rein schreibe und abspeicher.

Nun möchte ich einige dieser Daten in eine andere Datei rein schreiben.

X= in gleiche Datei schreiben
Y= in andere Datei (Rogerm.xlsx) schreiben

Ich habe es mit dem gleichen Prinzip versucht, nur überall Workbooks("Rogerm.xlsx"). davor gemacht.
So einfach scheint es aber nicht zu sein.

Und ja, das Tabellenblatt heißt in beiden Dateien gleich.

Anbei mein kompletter Code für den Klick auf den CommandButton1.
Dieser soll auch beides auslösen, also sowohl das scheiben in die gleiche Datei, als auch das schreiben in die andere Datei.


Code:
Private Sub CommandButton1_Click()
Dim x As Long
Dim y As Long

   
x = Sheets("Produktion").Range("A65536").End(xlUp).Row
y = Workbooks("Rogerm.xlsx").Sheets("Produktion").Range("A65536").End(xlUp).Row

Sheets("Produktion").Cells(x + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")
Sheets("Produktion").Cells(x + 1, 2) = CDbl(Format(TextBox2.Text, Number))
Sheets("Produktion").Cells(x + 1, 3) = CDbl(Format(Innen, Number))
Sheets("Produktion").Cells(x + 1, 4) = CDbl(Format(Bäckchen, Number))
Sheets("Produktion").Cells(x + 1, 5) = CDbl(Format(Ohren, Number))
Sheets("Produktion").Cells(x + 1, 6) = CDbl(Format(Maskem, Number))
Sheets("Produktion").Cells(x + 1, 7) = CDbl(Format(Maskeo, Number))
Sheets("Produktion").Cells(x + 1, 8) = CDbl(Format(SauMager, Number))
Sheets("Produktion").Cells(x + 1, 9) = CDbl(Format(SauMaske, Number))
Sheets("Produktion").Cells(x + 1, 10) = CDbl(Format(Fettbacke, Number))
Sheets("Produktion").Cells(x + 1, 11) = CDbl(Format(Schnauze, Number))
Sheets("Produktion").Cells(x + 1, 12) = CDbl(Format(Schläfen, Number))
Sheets("Produktion").Cells(x + 1, 13) = CDbl(Format(Drüsen, Number))
Sheets("Produktion").Cells(x + 1, 14) = CDbl(Format(SauOhren, Number))
Sheets("Produktion").Cells(x + 1, 15) = CDbl(Format(Schwarte, Number))
Sheets("Produktion").Cells(x + 1, 16) = CDbl(Format(Muschel, Number))

Workbooks("Rogerm.xlsx").Sheets("Produktion").Cells(y + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")



Workbooks("Rogerm.xlsx").Save
ActiveWorkbook.Save
Unload Me
End Sub
Hallo

was ist denn scheinbar nicht so einfach?
Fehlermeldung oder passiert nüscht?

ist dein Workbook Roger.... denn schon offen?


MfG Tom
Hallo Tom,

nein

habs ausgetestet, wenns offen ist geht es.

gibt es ein variante wo es nicht offen sein muss?



Wenn nicht, was ist der Code zum öffnen?

Und ist das der zum schließen?
Code:
Workbooks("Rogerm.xlsx").close
Hallo

probiere es auf diese Weise
den Pfad zum Öffnen der Datei bitte anpassen

Code:
Private Sub CommandButton1_Click()
Dim x As Long
Dim y As Long

With ThisWorkbook.Sheets("Produktion")
   x = .Range("A65536").End(xlUp).Row
   .Cells(x + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")
   .Cells(x + 1, 2) = CDbl(Format(TextBox2.Text, Number))
   .Cells(x + 1, 3) = CDbl(Format(Innen, Number))
   .Cells(x + 1, 4) = CDbl(Format(Bäckchen, Number))
   .Cells(x + 1, 5) = CDbl(Format(Ohren, Number))
   .Cells(x + 1, 6) = CDbl(Format(Maskem, Number))
   .Cells(x + 1, 7) = CDbl(Format(Maskeo, Number))
   .Cells(x + 1, 8) = CDbl(Format(SauMager, Number))
   .Cells(x + 1, 9) = CDbl(Format(SauMaske, Number))
   .Cells(x + 1, 10) = CDbl(Format(Fettbacke, Number))
   .Cells(x + 1, 11) = CDbl(Format(Schnauze, Number))
   .Cells(x + 1, 12) = CDbl(Format(Schläfen, Number))
   .Cells(x + 1, 13) = CDbl(Format(Drüsen, Number))
   .Cells(x + 1, 14) = CDbl(Format(SauOhren, Number))
   .Cells(x + 1, 15) = CDbl(Format(Schwarte, Number))
   .Cells(x + 1, 16) = CDbl(Format(Muschel, Number))
End With

Workbooks.Open "C:\Ordner\Unterordner\Rogerm.xlsx" 'Pfad anpassen
With Workbooks("Rogerm.xlsx").Sheets("Produktion")
   y = .Range("A65536").End(xlUp).Row
   .Cells(y + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")
End With


Workbooks("Rogerm.xlsx").Save
ActiveWorkbook.Save
Unload Me
End Sub


MfG Tom
Vielen Dank Tom,
aber bevor ich meine als VBA Anfängeren meine mir bekannte schreibweise änder ::) habe ich doch fragen für mein verständnis

welcher unterschied ist zwischen diesen beiden varianten? 

Code:
With ThisWorkbook.Sheets("Produktion")
   x = .Range("A65536").End(xlUp).Row
   .Cells(x + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")


Code:
x = Sheets("Produktion").Range("A65536").End(xlUp).Row

Sheets("Produktion").Cells(x + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")


Habe es jetzt erstmal auf meine bekannte weise umgeschrieben, so funktioniert es.
Jetzt meckert er, wenn in den Labeln (Innen, Bäckchen, etc) nichts steht. Die kann ich aber direkt mit "0" laden.

Code:
Private Sub CommandButton1_Click()
Dim x As Long
Dim y As Long

   
x = Sheets("Produktion").Range("A65536").End(xlUp).Row


Sheets("Produktion").Cells(x + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")
Sheets("Produktion").Cells(x + 1, 2) = CDbl(Format(TextBox2.Text, Number))
Sheets("Produktion").Cells(x + 1, 3) = CDbl(Format(Innen, Number))
Sheets("Produktion").Cells(x + 1, 4) = CDbl(Format(Bäckchen, Number))
Sheets("Produktion").Cells(x + 1, 5) = CDbl(Format(Ohren, Number))
Sheets("Produktion").Cells(x + 1, 6) = CDbl(Format(Maskem, Number))
Sheets("Produktion").Cells(x + 1, 7) = CDbl(Format(Maskeo, Number))
Sheets("Produktion").Cells(x + 1, 8) = CDbl(Format(SauMager, Number))
Sheets("Produktion").Cells(x + 1, 9) = CDbl(Format(SauMaske, Number))
Sheets("Produktion").Cells(x + 1, 10) = CDbl(Format(Fettbacke, Number))
Sheets("Produktion").Cells(x + 1, 11) = CDbl(Format(Schnauze, Number))
Sheets("Produktion").Cells(x + 1, 12) = CDbl(Format(Schläfen, Number))
Sheets("Produktion").Cells(x + 1, 13) = CDbl(Format(Drüsen, Number))
Sheets("Produktion").Cells(x + 1, 14) = CDbl(Format(SauOhren, Number))
Sheets("Produktion").Cells(x + 1, 15) = CDbl(Format(Schwarte, Number))
Sheets("Produktion").Cells(x + 1, 16) = CDbl(Format(Muschel, Number))

Workbooks.Open "C:\Users\LNS\Desktop\VBA\Rogerm.xlsx"
y = Workbooks("Rogerm.xlsx").Sheets("Produktion").Range("A65536").End(xlUp).Row
Workbooks("Rogerm.xlsx").Sheets("Produktion").Cells(y + 1, 1) = Format(TextBox1.Text, "dd.mm.yyyy")


Workbooks("Rogerm.xlsx").Save
ActiveWorkbook.Save
Workbooks("Rogerm.xlsx").Close
Unload Me
End Sub
Hallo

wenn du die Labels??? gleich mit ner 0 belegst dann ist das ja kein Problem

die Unterschiede in der Schreibweise mit With...?
ich bin in der Zeit aufgewachsen wo Tinte noch recht teuer war :22:
deswegen spare ich mir gerne jedes zu viel geschriebene Wort
wozu also zu 16 TextBoxen jedesmal Sheets("Produktion")...
bzw Workbooks("Rogerm.xlsx").Sheets("Produktion")... davor schreiben?

MfG Tom
Vielen Dank Tom.

Dann bleibe ich erstmal bei meiner Variante.
Ist für mich aktuell einfacher.
Ich kopiere die Codes ja eh nur und änder die ab ::)

Soweit, das ich einen code komplett selbstständig tippen kann bin ich noch lange nicht :D