7.3k Aufrufe
Gefragt in Tabellenkalkulation von nero022 Mitglied (179 Punkte)
hallo erst ein mal,ich habe da eein problemm.
ich möchte daten aaus anderren excel tabellen hollen z.b
ich trage in spalte A1:A100 den namen der excel tabelle ein
10-0110 und dann soll er mir aus dieser excel tabelle die immer im
gleichen ordener liegt die werte aus tabelle1 Q27 hollen
und in spalte B1:B100 eintragen.
aber aus einer geeschlossenen arbeitsmappe.

Danke euch schon mal für die hilfe.

24 Antworten

0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Erst ein mal danke noch mals an alle für eure unterstützung !!
hallo nighty,
ich habe den code in meiner tabele eingefügt und auch versucht R2C1 zu ändern aber irgend wie zeigt er mir nur
#BEZUG! an ???
er soll mir die zelle Q27 zurück geben !! das habe ich dort eingegeben aber ich denke es ist falsch von mir... R27C17
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo nero022,

das angepasste Makro muss so lauten:

Option Explicit

Private Option Explicit

Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 Then
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("D:\TEMP\" & Range("A" & Target.Row) & ".xlsm") = True Then
Range("B" & Target.Row).Value = ExecuteExcel4Macro("'D:\TEMP\[" & Range("A" & Target.Row) & ".xlsm]Tabelle1'!R27C17")
Else
Range("A" & Target.Row).Value = "?"
Range("B" & Target.Row).Value = "?"
End If
End If
Application.EnableEvents = True
End Sub



Anstatt .xls gilt .xlsm
Anstatt Q27 gilt R27C17

Gruß
Rainer
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hallo reinberg,
ich habe das makro bei mir inn der tabelle eingefügt,und den pfad angepasst.
aber er sagt mir jetzt einen fehler von...
fehler beim kopielieren:
erwartet:Bezeichner

???
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo nero022,

leider bin ich kein Hellseher.
Warum postest Du Deinen Code nicht?

Der von mir gepostete Code ist getestet und funktioniert bei mir.

Vielleicht hast Du eine Fehlanpassung durchgeführt?

Gruß
Rainer
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hallo nighty & rainberg !!!
erst ein mal vielen danfür eure hillfe !!!
du hast recht,ich habe eine Fehlanpassung gemacht :(
( Tabelle1'!R27C17") ich hatte meine tabelle1 umbenant und daran lag es !!!
sorry !!
eure beiden makros gehen !!!!!!!!!
danke euch !!
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
eine Frage habe ich noch...????
geht es auch das ich erst bei A2 bis A500 die eintragungen vornehmen kann und nicht die ganze spalte A ???

Option Explicit
Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 Then
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("C:\test\" & Range("A" & Target.Row) & ".xlsm") = True Then
Range("B" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C17")
Range("C" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C18")
Range("D" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C19")
Range("E" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C20")
Range("F" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C21")
Range("G" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C22")
Range("H" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C23")
Range("I" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C24")
Range("J" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C25")
Range("K" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C26")
Range("L" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C27")
Range("M" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C28")
Range("N" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C29")
Range("O" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C30")
Range("P" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C31")
Range("Q" & Target.Row).Value = ExecuteExcel4Macro("'C:\test\[" & Range("A" & Target.Row) & ".xlsm]Werte'!R27C32")
Else
Range("A" & Target.Row).Value = "?"
Range("B" & Target.Row).Value = "?"
End If
End If
Application.EnableEvents = True
End Sub


gruß nero
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

dann würde ich doch die Dateien lieber öffnen
etwas in der art vielleicht ^^

gruss nighty

Option Explicit

Sub DateienLesen()
Call EventsOff
Dim fso As Object
Dim Datn() As Variant
Dim IndexDat As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Datn() = Range("A1:A500")
For IndexDat = 1 To 500
If fso.FileExists("D:\TEMP\" & Datn(IndexDat, 1) & ".xlsm") = True Then
Workbooks.Open Filename:="D:\Temp\" & Datn(IndexDat, 1)
Workbooks(Datn(IndexDat, 1)).Worksheets(1).Range("Q27:AF27").Copy
ThisWorkbook.Worksheets(1).Range("B" & IndexDat).PasteSpecial Paste:=xlValues, Operation:=xlNone
Workbooks(Datn(IndexDat, 1)).Close SaveChanges:=True
Else
Range("B" & IndexDat).Value = "?"
End If
Next IndexDat
Call EventsOn
End Sub

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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

alle drei makros gehören in ein allgemeines modul

pfad ist anzupassen

gruss nighty
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hallo nighty !! erst ein mal recht herzlichen dank !!!
ich habe es mal getestet und es geht,aber ich würde lieber gerne ddas erst makro von oben verwenden...
es es dort nicht möglich das ich die werte erst ab A2 eingebe ...?
ich habe nämlich noch eine kopfzeile die ich einfügen müßte und dieses makro wolte ich auch noch
in ein anderres tabellen blatt nur noch etwas anders eintragen...!!
wäre super wen es gehen würde !!!
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo nero,

dein Makro aus der Antwort 16 wird ja ausgeführt, wenn du in Spalte A etwas änderst. Es wird auch nur die Zeile angesprochen, in der du etwas änderst. Fängst du also in Zeile 2 an, so werden die Daten in Zeile geschrieben.

Wenn du in die erste Zeile noch Überschriften schreiben willst, würde ich das Makro wie folgt ergänzen,

Option Explicit
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
..


So kannst du Überschriften in deine erste Zeile schreiben, ohne dass das Makro ausgeführt wird.

Gruß

M.O.
...