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.

VBA in andere Datei schreiben
#1
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
Antworten Top
#2
Hallo

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

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


MfG Tom
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste