Supportnet / Forum / Tabellenkalkulation
xls mit VBA öffnen und verarbeiten möglich ?
Frage
Hi,
ich tu mich grad schwer mit dem Problem aus einem Tabellenblatt herraus über Befehlsschaltflächen eine bekannte .xls Datei zu öffnen, aus ihr Werte auszulesen und diese auf dem Blatt zuverarbeiten.
kann mir da mal einen brauchbaren Tip geben ?
danke im vorraus.
Antwort 1 von Annan
Hallo,
wenn dir der Pfad der Datei bekannt ist, dann einfach so:(In ein Standardmodul einfügen und einem CommandButton zuweisen)
Sub Dateiöffnen()
Workbooks.Open ("C:WINDOWSDesktopTest.xls"), Password:="Vielleicht"
MsgBox ("Datei ist offen !")
Workbooks("Test.xls").Close
MsgBox ("Datei ist wieder geschlossen !")
End Sub
Du musst deinen Pfad, in dem deine Datei liegt noch entsprechend angleichen. Falls diese Datei ein Paswort haben sollte, dann kannst du dies bei Password:= hineinschreiben ! Anstatt der MsgBox(Datei ist offen) kannst du dann deinen "Bearbeitungscode" einfügen !
MfG
Annan
wenn dir der Pfad der Datei bekannt ist, dann einfach so:(In ein Standardmodul einfügen und einem CommandButton zuweisen)
Sub Dateiöffnen()
Workbooks.Open ("C:WINDOWSDesktopTest.xls"), Password:="Vielleicht"
MsgBox ("Datei ist offen !")
Workbooks("Test.xls").Close
MsgBox ("Datei ist wieder geschlossen !")
End Sub
Du musst deinen Pfad, in dem deine Datei liegt noch entsprechend angleichen. Falls diese Datei ein Paswort haben sollte, dann kannst du dies bei Password:= hineinschreiben ! Anstatt der MsgBox(Datei ist offen) kannst du dann deinen "Bearbeitungscode" einfügen !
MfG
Annan
Antwort 2 von dare23
hi annan
danke erstmal für den tip. datei öffnen klappt auch tadellos.
nur häng ich schon wieder fest.
hier der code:
Private Sub kzsuche_Click()
Dim kz_quelle
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Range("b4").Select
kz_quelle = ActiveCell.Value
End Sub
er gibt hier bei dem range befehl mit fehler 1004 auf.
ich möchte einfach die zelle auslesen und in kz_quelle tun.
kann man das irgendwie anders machen? dh das das alles bisschen im hintergrundläuft ?
vieleicht muss ich da dieses range nicht nutzen ?
danke im vorraus
dare23
danke erstmal für den tip. datei öffnen klappt auch tadellos.
nur häng ich schon wieder fest.
hier der code:
Private Sub kzsuche_Click()
Dim kz_quelle
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Range("b4").Select
kz_quelle = ActiveCell.Value
End Sub
er gibt hier bei dem range befehl mit fehler 1004 auf.
ich möchte einfach die zelle auslesen und in kz_quelle tun.
kann man das irgendwie anders machen? dh das das alles bisschen im hintergrundläuft ?
vieleicht muss ich da dieses range nicht nutzen ?
danke im vorraus
dare23
Antwort 3 von Annan
Hallo dare,
du musst erst das Sheet selektieren, auf dem sich diese Zelle "B4" befindet:
Private Sub kzsuche_Click()
Dim kz_quelle
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Sheets("Tabelle1").select
Sheets("Tabelle1").Range("b4").Select
kz_quelle = ActiveCell.Value
End Sub
Den Tabellenblattnamen (bei mir Tabelle1) musst du entsprechend angleichen. Zu im Hitergrund laufen: Wo befindet sich denn kz_quelle ? In deiner Ursprungssdatei (dort wo dein Button liegt) ? Falls das so ist, möchtest du nur den Wert von B4 in deine Ursprungsdatei kopieren (also nur eine einzige Zelle ?) ? Einen Wert aus einer Zelle auslesen, würde auch ohne öffnen der "FuhrparkQuelle.xls" gehen !
MfG
du musst erst das Sheet selektieren, auf dem sich diese Zelle "B4" befindet:
Private Sub kzsuche_Click()
Dim kz_quelle
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Sheets("Tabelle1").select
Sheets("Tabelle1").Range("b4").Select
kz_quelle = ActiveCell.Value
End Sub
Den Tabellenblattnamen (bei mir Tabelle1) musst du entsprechend angleichen. Zu im Hitergrund laufen: Wo befindet sich denn kz_quelle ? In deiner Ursprungssdatei (dort wo dein Button liegt) ? Falls das so ist, möchtest du nur den Wert von B4 in deine Ursprungsdatei kopieren (also nur eine einzige Zelle ?) ? Einen Wert aus einer Zelle auslesen, würde auch ohne öffnen der "FuhrparkQuelle.xls" gehen !
MfG
Antwort 4 von dare23
rehuhu
ahh sheet vergessen. danke.
also es ist so. ich habe eine fuhrpark.xls in der ich eine maske gebaut hab in der ich wiederum aus 6 datein werte anzeigen / bearbeiten lassen muss. die 6 dateien sind im selben ordner wie die maske datei und müssen leider dateien bleiben, so das ich nicht mit blättern arbeiten kann.
die eine variable war nur zum testen, es werden wohl ne menge werden um alles aus den datein zu ziehen und sie danach in die fuhrpark.xls reinzuholen.
mit "im hintergrund" meine ich das datei öffnen und so, nich mitbekomm denn bei 6 datein wird es sicher das reinste geflacker werden nehme ich an.
desshalb dachte ich es gibt nochandere möglichkeiten auf einem arbeitsblatt rumzuspringen und variablen zu belegen ohne es sagen wir im vordergrund zu haben.
ist sowas mit vba möglich ?
mfg
dare23
ahh sheet vergessen. danke.
also es ist so. ich habe eine fuhrpark.xls in der ich eine maske gebaut hab in der ich wiederum aus 6 datein werte anzeigen / bearbeiten lassen muss. die 6 dateien sind im selben ordner wie die maske datei und müssen leider dateien bleiben, so das ich nicht mit blättern arbeiten kann.
die eine variable war nur zum testen, es werden wohl ne menge werden um alles aus den datein zu ziehen und sie danach in die fuhrpark.xls reinzuholen.
mit "im hintergrund" meine ich das datei öffnen und so, nich mitbekomm denn bei 6 datein wird es sicher das reinste geflacker werden nehme ich an.
desshalb dachte ich es gibt nochandere möglichkeiten auf einem arbeitsblatt rumzuspringen und variablen zu belegen ohne es sagen wir im vordergrund zu haben.
ist sowas mit vba möglich ?
mfg
dare23
Antwort 5 von Annan
Hallo,
du ziehst also per Button, Daten aus 6 Dateien in die fuhrpark.xls. Nach Übertragung der Daten sollen die 6 Dateien wieder geschlossen werden ? Der Anwender soll demnach das Öffnen, Übertragen u. wieder Schliessen nicht mitbekommen u. während dieser Vorgänge nur das Bild von "fuhrpark.xls" sehen dürfen ? Hab ich das richtig verstanden ?
MfG
du ziehst also per Button, Daten aus 6 Dateien in die fuhrpark.xls. Nach Übertragung der Daten sollen die 6 Dateien wieder geschlossen werden ? Der Anwender soll demnach das Öffnen, Übertragen u. wieder Schliessen nicht mitbekommen u. während dieser Vorgänge nur das Bild von "fuhrpark.xls" sehen dürfen ? Hab ich das richtig verstanden ?
MfG
Antwort 6 von dare23
hi,
so ist das korrekt.
wie das ist wenn ich daten ändere hab ich mir noch nicht weiter gedanken gemacht. sicher mit einem button "daten speichern" der die datein wieder öffnet und die alten daten überschreibt oder so etwas.
mfg
so ist das korrekt.
wie das ist wenn ich daten ändere hab ich mir noch nicht weiter gedanken gemacht. sicher mit einem button "daten speichern" der die datein wieder öffnet und die alten daten überschreibt oder so etwas.
mfg
Antwort 7 von dare23
ich noch mal.
da ich auch eine "vor" und "zurück" schaltfläche realisieren möchte wäre es vieleicht eine überlegung die datein offen zu lassen. man könnte ja noch eine schaltfläche "dateien schließen"einbaun.
dh eigentlich interessiert nur das die bearbeiteten datein (blätter) im hintergrund bleiben beim auslesen und einschreiben.
da ich auch eine "vor" und "zurück" schaltfläche realisieren möchte wäre es vieleicht eine überlegung die datein offen zu lassen. man könnte ja noch eine schaltfläche "dateien schließen"einbaun.
dh eigentlich interessiert nur das die bearbeiteten datein (blätter) im hintergrund bleiben beim auslesen und einschreiben.
Antwort 8 von Annan
Hallo,
so könnte es aussehen, wenn du den Wert v. B4 aus Tabelle1, der Datei FuhrparkQuelle.xls in die Fuhrpark.xls (Tabelle1, A1) einliest:
Private Sub kzsuche_Click()
Application.ScreenUpdating = False
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Workbooks("Fuhrpark.xls").Sheets("Tabelle!").Range("A1").Value = Workbooks("FuhrparkQuelle.xls").sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Activate
End Sub
Dabei bleibt die Datei "FuhrparkQuelle.xls" weiterhin geöffnet !
Könnte man mit einem Button (dieser befindet sich in "Fuhrpark.xls") schliessen:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Workbooks("FuhrparkQuelle.xls").Save
Workbooks("FuhrparkQuelle.xls").Close
Workbooks("Fuhrpark.xls").Activate
End Sub
"FuhrparkQuelle.xls" wird dabei gespeichert (obwohl das bei reinem Daten auslesen, ohne bearbeiten nicht nötig wäre) u. geschlossen u. Benutzer hat die ganze Zeit das Bild von "Fuhrpark.xls" auf dem Bildschirm(also läuft im Hintergrund)
Hoffe das hilft dir weiter
MfG
so könnte es aussehen, wenn du den Wert v. B4 aus Tabelle1, der Datei FuhrparkQuelle.xls in die Fuhrpark.xls (Tabelle1, A1) einliest:
Private Sub kzsuche_Click()
Application.ScreenUpdating = False
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Workbooks("Fuhrpark.xls").Sheets("Tabelle!").Range("A1").Value = Workbooks("FuhrparkQuelle.xls").sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Activate
End Sub
Dabei bleibt die Datei "FuhrparkQuelle.xls" weiterhin geöffnet !
Könnte man mit einem Button (dieser befindet sich in "Fuhrpark.xls") schliessen:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Workbooks("FuhrparkQuelle.xls").Save
Workbooks("FuhrparkQuelle.xls").Close
Workbooks("Fuhrpark.xls").Activate
End Sub
"FuhrparkQuelle.xls" wird dabei gespeichert (obwohl das bei reinem Daten auslesen, ohne bearbeiten nicht nötig wäre) u. geschlossen u. Benutzer hat die ganze Zeit das Bild von "Fuhrpark.xls" auf dem Bildschirm(also läuft im Hintergrund)
Hoffe das hilft dir weiter
MfG
Antwort 9 von dare23
hi
also Annan großen respekt ! das du das hier so locker hinbekommst. ich dank dir wie verrückt.
ich werd mal anfangen alles einzugeben. wenn noch was is meld ich mich. aber glaub die zeile
Application.ScreenUpdating = False
ist das was ich suchte.
nochmal n dickes dankeschön an dich !
bis demnächst
dare23
also Annan großen respekt ! das du das hier so locker hinbekommst. ich dank dir wie verrückt.
ich werd mal anfangen alles einzugeben. wenn noch was is meld ich mich. aber glaub die zeile
Application.ScreenUpdating = False
ist das was ich suchte.
nochmal n dickes dankeschön an dich !
bis demnächst
dare23
Antwort 10 von dare23
ich wieder
tut mir leid aber nun kommt n index fehler ( 9 ). nutz ich ein feld irgendwie durch diese anweisungen ?
Application.ScreenUpdating = False
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Workbooks("Fuhrpark.xls").Sheets("Tabelle!").Range("C5").Value =Workbooks("Quelle.xls").Sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Activate
mfg
dare23
tut mir leid aber nun kommt n index fehler ( 9 ). nutz ich ein feld irgendwie durch diese anweisungen ?
Application.ScreenUpdating = False
Workbooks.Open ("C:.. ..FuhrparkQuelle.xls")
Workbooks("Fuhrpark.xls").Sheets("Tabelle!").Range("C5").Value =Workbooks("Quelle.xls").Sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Activate
mfg
dare23
Antwort 11 von dare23
ich wieder
die Maskendatei hies Fuhrparkmanagment.xls drum gings nicht. hihi. Nun heißt sie "Fuhrpark.xls" bevor es noch Probleme mit langen Namen gibt.
Aber richtig gehts auch nicht. Dh nur mit folgendem Code
Dim kz_quelle
Application.ScreenUpdating = False
Workbooks.Open ("C:Dokumente und EinstellungenchaufeDesktopmmFuhrparkQuelle.xls")
kz_quelle=Workbooks("Quelle.xls").Sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Sheets("Auswahl").Range("C5").Value=kz_quelle
funktioniert es, leider springt er aber wieder in das Arbeitsblatt der "Quelle"-Datei und bleibt da bis zum Ende, obwohl er den Wert der Variable in das Arbeitsblatt der "Fuhrpark"-Datei schreibt. Und zwar springt er beim öffnen der "Quelle"-Datei rein.
die Maskendatei hies Fuhrparkmanagment.xls drum gings nicht. hihi. Nun heißt sie "Fuhrpark.xls" bevor es noch Probleme mit langen Namen gibt.
Aber richtig gehts auch nicht. Dh nur mit folgendem Code
Dim kz_quelle
Application.ScreenUpdating = False
Workbooks.Open ("C:Dokumente und EinstellungenchaufeDesktopmmFuhrparkQuelle.xls")
kz_quelle=Workbooks("Quelle.xls").Sheets("Tabelle1").Range("B4").Value
Workbooks("Fuhrpark.xls").Sheets("Auswahl").Range("C5").Value=kz_quelle
funktioniert es, leider springt er aber wieder in das Arbeitsblatt der "Quelle"-Datei und bleibt da bis zum Ende, obwohl er den Wert der Variable in das Arbeitsblatt der "Fuhrpark"-Datei schreibt. Und zwar springt er beim öffnen der "Quelle"-Datei rein.
Antwort 12 von Annan
Hallo Dare,
bevor das hier zu einem Endlosthread wird, mache
ich dir folgenden Vorschlag: Falls dein Problem noch nicht gelöst sein sollte, dann schick mir die beiden Dateien an folgende Email:
Held1233@aol.com
Aber bitte lass den Code so, dass ich mir eventuelle Fehlermeldungen ansehen kann.
Schreib genau dazu, was passieren soll (Also, von welcher Datei zu welcher Datei und was genau kopiert werden soll) ! Ich seh mir das Ganze mal an u. schick dir nach Möglichkeit die Lösung zurück.
MfG
bevor das hier zu einem Endlosthread wird, mache
ich dir folgenden Vorschlag: Falls dein Problem noch nicht gelöst sein sollte, dann schick mir die beiden Dateien an folgende Email:
Held1233@aol.com
Aber bitte lass den Code so, dass ich mir eventuelle Fehlermeldungen ansehen kann.
Schreib genau dazu, was passieren soll (Also, von welcher Datei zu welcher Datei und was genau kopiert werden soll) ! Ich seh mir das Ganze mal an u. schick dir nach Möglichkeit die Lösung zurück.
MfG

