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

Suchmakro

Suchmakro
05.12.2008 09:59:40
Ernst
Hallo Vba Experten !
User Rudi Hat mir diesen Code geschrieben funktioniert super.Recht herzlichen Dank.
Bräuchte noch zwei Änderungen.
1)Ich möchte das mir die Dateien in der Zieldatei in Tabelle2 ausgegeben werden !
wie muss man die Range Angabe dafür ändern ?
2)ist es machbar das, das zu suchende Wkb.nicht im selben Ordner wie die Zieldatei sein muss zb suchen per Pfadangabe..
Wäre für Lösungsvorschläge dankbar.
lg.Ernst
in ein Modul im Ziel-Workbook (xy.xls)
Ziel muss im gleichen Ordner stehen, wie das zu suchende Wkb.

Sub DatenHolen()
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Set wksZiel = ThisWorkbook.Sheets(1)
Set wksQuelle = Workbooks.Open(NeuesteDatei(ThisWorkbook.Path, ThisWorkbook.Name)).Sheets(1)
With wksQuelle
.Range("B5:B15").Copy wksZiel.Range("O87")
.Range("D5:D15").Copy wksZiel.Range("P87")
End With
wksQuelle.Parent.Close False
End Sub



Function NeuesteDatei(strPfad As String, Optional strIgnoredWkb As String) As String
Dim dteMax As Date, strDatei As String
Const strType As String = "*.xls"
If Right(strPfad, 1)  "\" Then strPfad = strPfad & "\"
strDatei = Dir(strPfad & strType, vbNormal)
Do While strDatei  ""
If strDatei  strIgnoredWkb Then
If FileDateTime(strPfad & strDatei) > dteMax Then
dteMax = FileDateTime(strPfad & strDatei)
NeuesteDatei = strPfad & strDatei
End If
End If
strDatei = Dir
Loop
End Function


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zu 1.)
05.12.2008 10:59:00
Matthias
Hallo
Ich empfehle Dir immer das Sheet mit dem Blattnamen anzusprechen
warum ?
Nimm eine leere Mappe mit 3 Blättern
kopiere diesen Code in ein Modul und starte das Makro

Option Explicit
Sub sheet()
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Set wksZiel = ThisWorkbook.Sheets(1)
MsgBox wksZiel.Name
End Sub


Excel zeigt Dir nun die erste Tabelle laut Index an (also die im Tabellenreiter ganz links steht)
meist Tabelle1
Nun verschiebe Tabelle1 hinter Tabelle2 und lass das Makro erneut laufen.
nun ist die Ausgabe der MsgBox=Tabelle2
Deshalb immer den Namen direkt mitgeben


Option Explicit
Sub sheet()
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Set wksZiel = ThisWorkbook.Worksheets("Tabelle2")
MsgBox wksZiel.Name
End Sub


für Dein Beispiel also satt:
Set wksZiel = ThisWorkbook.Sheets(1)
benutze:
Set wksZiel = ThisWorkbook.Worksheets("Tabelle2")
Gruß Matthias

Anzeige
AW: zu 1.)
05.12.2008 12:22:00
Ernst
Danke für den Rat !
jedoch wenn ich das so änder wie vorgeschlagen kommt Fehlermeldung "Die Copy-Methode des range Objekts konnte nicht durchgeführt werden .Range("D5:D15").Copy wksZiel.Range("P87").
was fehlt da noch ?
Lg.Ernst
AW: zu 1.)
05.12.2008 12:33:00
Ernst
Hallo !
was mir noch auffällt das die formatierung der Zellen in der Zieldatei verloren geht und ich nur rautezeichen sehe lässt sich das vermeiden ?
Lg.Ernst
AW: Suchmakro
05.12.2008 12:55:00
Rudi
Hallo,

Sub DatenHolen()
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Dim strFolder As String
With Application.FileDialog(4)
.AllowMultiSelect = False
.InitialFileName = "c:\*.xls"
.InitialView = 2
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder  "" Then
Set wksZiel = ThisWorkbook.Sheets("Tabelle2")
Set wksQuelle = Workbooks.Open(NeuesteDatei(strFolder, ThisWorkbook.Name)).Sheets(1)
With wksQuelle
.Range("B5:B15").Copy wksZiel.Range("O87")
.Range("D5:D15").Copy wksZiel.Range("P87")
End With
wksQuelle.Parent.Close False
End If
End Sub


Gruß
Rudi

Anzeige
AW: Suchmakro
05.12.2008 13:11:48
Ernst
Hallo Rudi !
Recht herzlichen Dank.
Es kommt die Fehlermeldung die Copy-methode des Range Objekts konnte nicht durchgeführt werden
.Range("D5:D15").Copy wksZiel.Range("P87")
kann man den Pad der Quelldatei auch fix vergeben und die Formatierung der Zielzellen beibehalten.
Lg.ERNST
AW: Suchmakro
05.12.2008 13:21:28
Rudi
Hallo,
zu dem Fehler kann ich nichts sagen, da ich deine Tabellen nicht kenne.

Sub DatenHolen()
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Const strFolder As String = "c:\MeinPfad"
Set wksZiel = ThisWorkbook.Sheets("Tabelle2")
Set wksQuelle = Workbooks.Open(NeuesteDatei(strFolder, ThisWorkbook.Name)).Sheets(1)
With wksQuelle
.Range("B5:B15").Copy
wksZiel.Range("O87").PasteSpecial xlPasteValues
.Range("D5:D15").Copy
wksZiel.Range("P87").PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
wksQuelle.Parent.Close False
End Sub


Gruß
Rudi

Anzeige
AW: Suchmakro
05.12.2008 13:42:00
Ernst
Hallo Rudi das funktioniert perfekt !
Der Fehler liegt daran das ich verbundene Zellen wie müsste das aussehen copy d:5 past p:87..copy d:6 past p:88.. usw...?
Lg.Ernst
AW: Suchmakro
05.12.2008 13:50:00
Rudi
Hallo,

copy d:5 past p:87..copy d:6 past p:88.. usw...?


das kann ich dir nicht sagen. Verbundene Zellen haben in Datentabellen absolut nichts zu suchen, da es nur Probleme damit gibt, wie du siehst. Deshalb arbeite ich nicht damit. Ich probiere das jetzt auch nicht für dich aus.
Anstatt zu fragen, solltest du es einfach machen. Versuch macht kluch.
Gruß
Rudi

Anzeige
Danke!
05.12.2008 13:53:00
Ernst
Hallo Rudi !
Recht herzlichen Dank für deine Bemühungen.
Lg.Ernst

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige