Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

Auslese von Werten

Auslese von Werten
16.05.2017 16:42:23
Werten
Hallo Zusammen,
ich möchte aus mehreren Excel-Dateien ausgewählte Werte in eine Zieldatei auslesen. Das Programm arbeitet auch soweit zu meiner Zufriedenheit.
Es kann sein, dass einige Zellen in den Excel-Dateien, aus denen die Werte herausgelesen werden sollen, ohne Werte sind.
Aktuell werden die leeren Zellen in der neuen Zieldatei mit dem Wert "0" angezeigt. Jedoch sollen auch die Zellen in der Zieldatei leer sein, sowie sie es in den Quelldateien auch sind.
Hat jemand eine Idee, wie ich den Code anpassen muss?
Vielen Dank für eure Unterstützung im Voraus.
Aktueller Code:
Option Explicit
Const strSheetQ As String = "Reiter"
Const strSheetZ As String = "Ziel"
Const strCellQ1 As String = "e4"

Public Sub CommandButton1_Click()
Dim stCalc As Integer
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
On Error GoTo Fin
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
stCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDir = ThisWorkbook.Path
'strDir = "C:\Temp\11\"
Set objDir = objFSO.GetFolder(strDir)
'dirInfo objDir, "*.xls", True
dirInfo objDir, "*.xlsx"
Fin:
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
End Sub

Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
lngLastRow = IIf(Len(.Cells(.Rows.Count, 1)), _
.Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row) + 1
With .Cells(lngLastRow, 1)
.Formula = "='" & Mid(varTMP.Path, 1, _
InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
strSheetQ & "'!" & strCellQ1
End With
.UsedRange.Value = .UsedRange.Value
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslese von Werten
16.05.2017 18:41:07
Werten
Hallo Aggus,
nach Blick in meine Glaskugel: nimm statt der .value-Eigenschaft die .formula-Eigenschaft.
Falls das Deine Frage nicht beantwortet, solltest Du den Code posten, mit dem die Inhalte aus den Dateien in die Zieldatei geschrieben werden.
Gruß, Jürgen
AW: Auslese von Werten
16.05.2017 18:55:56
Werten
Hallo Jürgen,
vielen Dank für deine Rückmeldung. Ich habe es ausprobiert. Statt der Zahl wird jetzt immer noch einen "0" angezeigt, jedoch wenn man auf die ausgelesenen Felder klickt, wird die Formel angezeigt. Da die Zelle weiterhin nicht leer ist (wie in der Quelldatei), ist das Problem leider noch nicht gelöst.
Der Code lautet:
Public Sub CommandButton1_Click()
Dim stCalc As Integer
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
On Error GoTo Fin
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
stCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDir = ThisWorkbook.Path
'strDir = "C:\Temp\11\"
Set objDir = objFSO.GetFolder(strDir)
'dirInfo objDir, "*.xls", True
dirInfo objDir, "*.xlsx"
Fin:
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
End Sub

Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name  ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
lngLastRow = IIf(Len(.Cells(.Rows.Count, 1)), _
.Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row) + 1
With .Cells(lngLastRow, 1)
.Formula = "='" & Mid(varTMP.Path, 1, _
InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
strSheetQ & "'!" & strCellQ1
End With
.UsedRange.Value = .UsedRange.Value
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
End Sub

Anzeige
AW: Auslese von Werten
16.05.2017 21:14:04
Werten
Hallo Aggus,
ich hatte übersehen, dass Du das Auslesen über externe Zellverknüpfungen realisierst. Diese ergeben "0", wenn die referenzierte Zelle leer ist. Mir fällt keine bessere Idee ein, als die verwendete Formel um eine Prüfung zu erweitern im Sinn "wenn(="";"";)", wobei deine bisherige Formel ist.
Je nachdem, ob Du die Formel nach deutschen oder englischen Syntaxregeln bildest, kannst Du Eigenschaft .formulalocal oder .formula verwenden.
Gruß, Jürgen
AW: Auslese von Werten
17.05.2017 22:11:12
Werten
Hallo zusammen,
meiner Meinung nach muss die Formel wie folgt angepasst werden (siehe fett markiert). Ich habe noch auch diverse andere Anpassungen ausprobiert. Hat jemanden eine Idee, wie die Formel richtig lauten muss.
Code:

Option Explicit
Const strSheetQ As String = "Tabelle1"
Const strSheetZ As String = "Zieldatei"
Const strCellQ1 As String = "e4"
Public Sub CommandButton1_Click()
Dim stCalc As Integer
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
On Error GoTo Fin
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
stCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDir = ThisWorkbook.Path
'strDir = "C:\Temp\11\"
Set objDir = objFSO.GetFolder(strDir)
'dirInfo objDir, "*.xls", True
dirInfo objDir, "*.xlsx"
Fin:
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
End Sub
Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
lngLastRow = IIf(Len(.Cells(.Rows.Count, 1)), _
.Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row) + 2
With .Cells(lngLastRow, 1)
.Formula = "=IF(="""","""",)" & Mid(varTMP.Path, 1,
InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
strSheetQ & "'!" & strCellQ1
End With
.UsedRange.Formula = .UsedRange.Formula
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
End Sub
Anzeige
AW: Auslese von Werten
19.05.2017 08:38:18
Werten
Hallo zusammen,
hat jemand eine noch eine Idee?
Besten Dank im Voraus.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige