Anzeige
Archiv - Navigation
1116to1120
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

Beim Speichern Daten übertragen

Beim Speichern Daten übertragen
Markus
Hallo zusammen,
würde gerne Eure Meinung zu folgendem Vorhaben hören/lesen. Ich hatte in folgendem Beitrag https://www.herber.de/forum/archiv/1076to1080/t1077439.htm bereits Eure Hilfe erhalten und das funktioniert auch sehr gut. Es geht vom Prinzip um`s gleiche Thema nur anders gelöst. Im alten Beitrag wurden Daten ausgelesen und importiert. Nun möchte ich gerne beim Speichern die Daten übertragen. Ich erhoffe mir dadurch einen kleinen Zeitvorteil (für mich).
In einer Excel-Anwendung werden auf dem Tabellenblatt "Schlüsselnummern" in Zeile 2 von Spalte A bis EA Daten gespeichert. Diese Daten möchte ich nun beim Speichern der Anwendung in eine Datenbank / Excelblatt "November" auf dem Laufwerk H übertragen. Diese Datenbank ist normalerweise geschlossen. Also müsste diese dann beim Speichern der Anwendung erst geöffnet und dann wieder geschlossen werden. Jetzt könnten allerdings im schlimmsten Fall mehrere Anwender beim Speichern zeitgleich auf diese Datenbank zu greifen. Kann oder wird es hierbei zu Konflikten kommen? Dann würde ich auch gerne beim Speichern der Anwendung eine Abfrage über die Datenbank laufen lassen, ob der Datensatz vorhanden ist und wenn ja, dann diesen Überschreiben. Ansonsten die Daten in der nächsten freien Zeile schreiben. Die Datensätze sind über eine Vertragsnummer in Spalte A eindeutig identifizierbar.
Schon mal Danke fürs Lesen :-) und Meinungen bzw. Lösungsansätze sind erwünscht.
Markus

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

Betreff
Benutzer
Anzeige
AW: Beim Speichern Daten übertragen
24.11.2009 22:15:29
fcs
Hallo Markus,
das Problem, dass evtl. 2 Personen gleichzeitig die Speichernaktion versuchen kann man nur bedingt umschiffen. Wenn es nicht zu viele Daten sind, dann dauert der Speichervorgang ja nur 1 bis 2 paar Sekunden.
Ansonsten ist es relativ einfach, die Daten zu speichern. Man kann das Ereignismakro Workbook_BeforeSave nutzen um den Datentransfer zu realiseren.
Nachfolgend ein Beispielmakro.
Gruß
Franz
'###                   Prozedur in DieseArbeitsmappe            ###
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim wbAktiv As Workbook, wbZentral As Workbook, strZentral As String
Dim wksDaten As Worksheet, wksZiel As Worksheet
Dim Spalte As Long, Zeile As Long
Dim varSchluessel, ZelleSchluessel As Range, ZeileZiel As Long
'Name der Datenbank-Datei
strZentral = "H:\Verzeichnis\ZentralDatei.XLS"
'strZentral = "C:\Users\Public\Test\ZentralDatei.XLS"
'Aktive Datei merken
Set wbAktiv = ActiveWorkbook
'Tabellenblatt mit Daten in aktiver Datei setzen
Set wksDaten = wbAktiv.Worksheets("Schlüsselnamen")
'Zentrale Datenbank - öffnen
Application.ScreenUpdating = False
Set wbZentral = Application.Workbooks.Open(Filename:=strZentral)
If wbZentral.ReadOnly = True Then
Cancel = True
wbZentral.Close savechanges:=False
Application.ScreenUpdating = True
MsgBox "Die Datei """ & strZentral & """ ist momentan in Benutzung." & vbLf _
& "Bitte später versuchen zu speichern."
Else
'Zielblatt setzen
Set wksZiel = wbZentral.Worksheets("November")
'Vertragsnummer in Spalte 1 in der Daten-Datei abarbeiten
With wksDaten
'      For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Column
Zeile = 2 'Zeile mit den zu übertragenden Daten
varSchluessel = .Cells(Zeile, 1).Value
'In Zielblatt Spalte 1 (A) die Vertragsnummer suchen
With wksZiel
Set ZelleSchluessel = .Columns(1).Find(What:=varSchluessel, LookIn:=xlValues, _
lookat:=xlWhole)
If ZelleSchluessel Is Nothing Then
'Schlüssel noch nicht vorhanden, nächste freie Zeile in Spalte 1 mit Schlüsseln
ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Else
ZeileZiel = ZelleSchluessel.Row
End If
End With
'Daten nach Ziel übertragen
.Range(.Cells(Zeile, 1), .Cells(Zeile, 131)).Copy _
Destination:=wksZiel.Cells(ZeileZiel, 1)
'      Next
End With
'Zentrale Datei speichern und  wieder schließen
wbZentral.Save
wbZentral.Close
Application.ScreenUpdating = False
End If
End Sub

Anzeige
Laufzeitfehler 9
25.11.2009 10:12:03
Markus
Hallo Franz,
erst mal vielen Dank für dieses tolle Makro. Funktioniert fast perfekt. Hierfür schon mal ein dickes FREU! Ich habe aber leider noch folgendes Problem. In der Anwendung habe ich einen CommandButton eingebaut, mit dem der Nutzer die Anwendung automatisch druckt, speichert und schließt. Hier der Code dafür:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If Range("I27") = "2" Then
ActiveSheet.PrintOut
Else
MsgBox "Bitte Scorebogen vervollständigen! Scorebogen wurde NICHT gespeichert und  _
ausgedruckt!"
Exit Sub
End If
ActiveWorkbook.SaveAs Filename:="H:\Scoring - Privatkunden\Privatkundenscoring\" & Range("K2") & _
"\" _
& Range("B4") & Range("D4") & ".XLS"
Application.ScreenUpdating = True
End Sub
Ich vermute das diese Anweisung mit Deinem Code sich nicht verträgt, denn beim Debuggen wird mir diese Zeile aus deinem Makro angezeigt:
Set wksZiel = wbZentral.Worksheets("November")
Wenn ich den eingebauten CommandButton drücke, kommt der Laufzeitfehler. Wenn ich nur das Speichersymbol drücke, werden die Daten aus dem Blatt "Schlüsselnummern" korrekt in die Datenbank geschrieben.
Kannst Du mir hier noch mal helfen?
Zum Thema "mehrere Anwender" speichern gleichzeitig. Kann man das eventuell mit einer Schleife versehen und so lange versuchen bis die Daten gespeichert sind?
Danke und Grüße
Markus
Anzeige
AW: Laufzeitfehler 9
25.11.2009 11:17:58
Björn
Hallo,
hab jetzt nicht alles durchgelesen und verstanden, was das Makro macht.
Aber Laufzeitfehler 9 bedeutet: "Index außerhalb des gültigen Bereichs".
Das passiert, wenn du eine Mappe oder ein Blatt versuchst zu aktivieren, dass es gar nicht gibt.
Da der Fehler bei "Set wksZiel = wbZentral.Worksheets("November")" kommt, ist meine Vermutung, dass Du entweder kein Blatt "November hast, oder was mit wbZentral nicht stimmt. Schau auch mal auf Rechtschreibfehler, vielleicht heißt Dein Blatt ja "Novenber". Soll keine Blödmache sein, ist mir auch schon so gegangen...
Gruß
Björn B.
Anzeige
...leider nein.......
25.11.2009 11:57:50
Markus
Hi Björn,
leider liegt`s nicht daran, obwohl so ein Fehler Original von mir kommen könnte...... Denn wenn ich in meiner Symbolleiste auf das Speichern-Symbol klicke, dann werden mir die Daten in die Datenbank geschrieben. Ich bekomme diesen Fehler nur dann, wenn ich den CommandButton benutze. Irgendwie hängt es wohl mit den unterschiedlichen Speicherorten zusammen. Denn ich möchte die Excelmappe in dem Zielort H:\Scoring - Privatkunden\Privatkundenscoring (dies geschieht über den Button) und nur die Daten der Exceltabelle "Schlüsselnummern" in dem Zielort H:\November speichern.
Grüße
Markus
Anzeige
AW: ...leider nein.......
25.11.2009 14:52:44
fcs
Hallo Markus,
irgendwie geht die Kombination aus Workbook-Ereignis-Makro und Button-Makro in der Form nicht.
Ich hab noch ein wenig rumexperimentiert und die Prozeduren weitestgend in allgemeine Module ausgelagert. Jetzt funktioniert es bei mir.
Das Modul "ModulSpeichern" kannst du so deine Datei kopieren und Dateinamen/Verzeichnisse entsprechend anpassen. Die Prozeduren für den Button und DieseArbeitsmappe muss du auch entsprechend übernehmen.
Gruß
Franz
https://www.herber.de/bbs/user/66160.xls
werde testen....leider erst Morgen......
25.11.2009 15:26:48
Markus
Hallo Franz,
sorry, werd es heute leider nicht mehr testen können. Werde mich aber Morgen dann melden. Erstmal Danke für die tolle Hilfe und Sorry für die ganze Arbeit.
Bis Morgen
Markus
Anzeige
..bin noch am testen......
26.11.2009 10:08:19
Markus
Hallo Franz,
bin noch am testen....kämpfe mit meiner eigenen Unfähigkeit.....
melde mich
Markus
klappt super....Danke Franz!
26.11.2009 14:29:38
Markus
So, habe es gem. den Beschreibungen von Franz umgesetzt und es funktioniert super.
Schicke ein fettes Danke an das Forum und besonders an Franz. Hat mir schon zum zweiten Mal geholfen :-)!
Danke und Grüße
Markus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige