online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon schnepat vom 29.05.2019, 16:56 Options

Automatisiertes Zugreifen auf Daten

Hallo,

ich habe eine Menge verschiedener Excel-files (alle gleich aufgebaut) von denen ich jeweils einige Daten zur Weiterverwendung brauche. Ich möchte nun ein Excel-file schreiben, in welchem ich die benötigten Daten eines (ich brauche immer nur ein File pro Aufruf) files aufrufen und weiterverarbeiten kann. Ist es möglich, dies 'automatisiert' zu machen, d.h. in dem ich in eine Zelle den Namen des files eingebe, sucht es mir die Daten des passenden files heraus?

Ich hoffe, ich habe mich verständlich ausgedrückt...

Vielen Dank im Vorraus


Antwort schreiben

Antwort 1 von nighty vom 29.05.2019, 17:42 Options

hi all

ein beispiel :-)

gruss nighty

einzufuegen alt + f11/projektexplorer/DeineTabelle

Private Sub Worksheet_Change(ByVal Target As Range)
Rem zur Zeit A1 die Eingabe des Dateinamens
If Target.Column = 1 And Target.Row = 1 Then
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
Rem Dein Pfad
.LookIn = "D:\Temp\"
.SearchSubFolders = False
Rem zur Zeit A1 die Eingabe des Dateinamens
.Filename = Range("A1") & ".xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
Rem dein Bereich der Quelle und des Zieles
Workbooks(DateiName).Sheets(1).Range("A1:B1").Copy ThisWorkbook.Sheets(1).Range("A2:B2")
Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
Call EventsOn
End If
End Sub

einzufuegen alt + f11/projektexplorer/Allgemeines Modul

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Antwort 2 von nighty vom 29.05.2019, 18:04 Options

hi all :-)

alternativ wenn es nur 1 oder 2 zellen sind

gruss nighty

Option Explicit
Sub makro01()
ActiveWorkbook.SaveAs Filename:=ExecuteExcel4Macro _
("'C:\DeinPfad\" & "[DeineDatei]Tabelle1" & "'!" & Range("DeineZelle") _
.Address(, , xlR1C1)), FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Antwort 3 von nighty vom 29.05.2019, 18:16 Options

hi all :-)

oder besser so grrr
falsche code genommen :(

gruss nighty

Sub makro01()
Cells(2, 1) = ExecuteExcel4Macro("'D:\temp\" & "[" & Range("A1") & ".xls" & "]Tabelle1" & "'!" & Range("A1").Address(, , xlR1C1))
End Sub

Antwort 4 von schnepat vom 30.05.2019, 09:03 Options

Vielen Dank für die Antworten. Bei der letzten Variante klappt bei mir etwas mit dem Finden des Pfades nicht. Das habe ich schon richtig verstanden, dass ich da den Pfad angeben muss, wo das file liegt, oder. Muss der Apostroph sein vor der Addresse?
Sorry, bin wirklich kein Experte...

Ich arbeite übrigens mit Mac, weiss nicht, ob das relevant ist

Antwort 5 von nighty vom 30.05.2019, 12:36 Options

hi schnepat :-)

kein zeichen weglassen sind steuerzeichen,wobei mac ich mich nicht auskenne :-)

bei misslingen sind dann andere user gefragt :-)

ohne frage ist mac der bessere computer vs pc :-)))

gruss nighty

Antwort 6 von schnepat vom 30.05.2019, 13:32 Options

Hallo nighty,

ich habe mir dein erstes Script nochmals genauer angeschaut und probiert mit Hilfe von
Google und der Help die Funktion zu verstehen. Ziemliches Stück Arbeit für einen Laien...

Jetzt habe ich ein paar Fragen:

Das erste file habe ich im Projekteexplorer bei Tabelle1 reinkopiert, das zweite beim
Modul1 das oberhalb steht. Soweit richtig oder?

Dann habe ich meinen Pfad ersetzt. (Macintosh HD:Users:schneider:Desktop:)

Nun sollte doch, wenn ich etwas ändere in Zelle A1, das darin reingeschriebene als
Dateiname verwendet werden. Jedoch passiert überhaupt nichts.
Zur Kontrolle habe ich folgende Zeile eingefügt:
Target.Font.ColorIndex = 5 (noch vor der if-Abfrage)
Nun sollte doch die Farbe der Zelle ändern, wenn ich irgendwo etwas reinschreibe, aber
auch das geschieht nicht...
Muss ich noch irgendwo etwas einstelle, das das Programm aktiviert ist oder so?

Dann noch eine Frage (hoffe, ich nerve dich noch nicht zu sehr...):
Die Funktion des Eventoff und on files kapiere ich nicht wirklich. Was macht das?


Vielen Dank

Gruss Patrick

Antwort 7 von nighty vom 30.05.2019, 14:47 Options

hi patrick :-)

dieses ereignis Worksheet_Change(ByVal Target As Range)
(automatismus)reagiert auf veränderung einer zelle in der jeweiligen tabelle,wie auch z.b. beforeopen bzw beforesave ein makro auslöen kann auf deine Arbeitsmappe bezogen

eventon bzw eventoff schaltet automatische ereignisse wie bilfschirmaktualisierung und formelberechnung etc aus bzw an ,hat den vorteil einer rasanten beschleunigung eines makros da die routinen nun ausgeschaltet sind innerhalb der laufzeit.könnte man weglassen doch dann wäre wie schon beschrieben das makro um einiges langsamer.

eventon und eventoff beide in ein allgemeines modul das andere makro wie du es beschrieben hattest hinter der tabelle1 bzw deiner wunschtabelle in der der automatismus greifen soll.

sollte das makro aus beliebigen grund unterbrochen werden,so sind nun alle automatismen ausgeschaltet und excel ist nun lahmgelegt,in solchen fall ist eventon mit hand zu starten um excel wieder in den normalzustand zu bringen

noch sehr hilfreich ist die taste f8 im vbeditor,einzelschrittabarbeitung im makro mit der möglichkeit die variablen der aktuellen laufzeit zu kontrollieren,wobei ,bei einem ereignis ein haltepunkt im code gesetzt werden sollte(im vbeditor ganz links linksclick)

dein beispiel der einfaerbung der schriftfarbe ist soweit korrekt(excel2007 ausgeschlossen)

zu den anderen problemen weil macvariante von excel kenne ich mich leider nicht aus,hier sind auf jedenfall mac user gefragt

office 2007 sind beide varianten nicht lauffähig

als info fuer die macuser solltest du noch deine excelversion angeben

viel glueck
gruss nighty

code wurde mit excel2000 erstellt und getestet

Antwort 8 von nighty vom 30.05.2019, 15:02 Options

hi patrick :-)

uebrigens bin ich der laie :-))

hatte mal einen laufzeitwettbewerb provoziert in einem forum

folgende laufzeiten kamen zu stande

bei abtastung von 7 620 000 zellen

excelbenutzer=16 min
amatuer nighty=4 min
versierte amatuere ca 2 sek
profis legten eins drauf,bei abtastung von ca 16 510 000 zellen
unter 1 sekunde war nicht mehr messbar

somit gnadenlos verloren hab :-(

gruss nighty

Antwort 9 von schnepat vom 30.05.2019, 16:33 Options

So, jetzt hab ich dann einen Kopf wie eine Wassermelone, fühlt sich auf jeden Fall langsam so an...

Das mit dem Einfärben klappt jetzt, war ein Syntaxfehler.
Beim Kompilieren kommt das Programm aber nur bis zum Punkt:
With Application.FileSearch. Hier gibt es eine Fehlermeldung:
Laufzeitfehler 445, Objekt unterstützt Aktion nicht.

Sagt dir, oder sonstwem was?

Ich hab übrigens Office 2004 auf Mac

Antwort 10 von nighty vom 30.05.2019, 17:49 Options

hi patrick :-)

sollte dir hier keiner weiterhelfen können dann waere dieses forum auch nicht schlecht,profis satt

www.ms-office-forum.net

mein faforit in diesem ist jinx,er kann zu 100% alles beantworten ,doch er ist nicht leicht zu nehmen :-))

oder auch das,das ist auch klasse

http://www.office-loesung.de

ich hoffe man verzeiht mit die links zur konkurenz,ist sonst nicht meine art,aber vielleicht fuer patrick hilfreich wenn keiner weiter helfen kann

gruss nighty

Antwort 11 von nighty vom 30.05.2019, 17:51 Options

hi patrick :-)

der fehler liegt an der filesearchmethode die bei dir nicht vorhanden ist oder in der syntax abweicht

gruss nighty

Ähnliche Themen

Backup per vbscript
G_K  09.12.2007 - 79 Hits - 1 Antwort

Drive Image stellt Datensicherungsdatei nicht mehr her
PC-Frager  29.12.2007 - 86 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026