2016-09-28 2 views
0

Wir arbeiten mehrere Berichte, die alle mit dem Namen des Berichts beginnen und mit dem Datum jedes Mal im selben Format enden, wie "Example Report 28.09.16.xls ".Würde gerne Excel VBA auf offene Arbeitsmappe beginnend mit

Ich versuche, Ergebnisse aus einer Arbeitsmappe in einer anderen Arbeitsmappe zu zeigen, wenn sie beide gleichzeitig geöffnet sind, gibt es trotzdem, um dies mit linker Funktion arbeiten oder enthält, so dass ich jede Kombination von 2 Berichten und sie öffnen kann wird irrelevant über das Datum ziehen?

Windows("Example Report 28.09.16.xls").Activate 

Oder

=VLOOKUP(B1,'[Example Report 28.09.16.xls]Sheet1'!$B$1:$C$10,2,FALSE) 

ich das vorziehen würde auch ein Makro, sondern eine Formel Version wäre gut zu sein.

Wie oben muss ich das Datum in der Lage sein, etwas anderes zu sein, da die Person, die den Bericht öffnet, den relevanten Bericht zur gleichen Zeit öffnet.

Das Ziel besteht darin, dass ein Element, auf das in einer Reihe von Berichten verwiesen wird, alle Daten für jeden Bericht neben diesem Element in einem Bericht anzeigen.

Weiß jemand, wie ich dies oder irgendeinen besseren Weg um dies tun kann?

EDIT

Eine weitere Idee ive gerade hatte, ist es eine Möglichkeit, um das Fenster zu Stück zusammen unter Verwendung des ‚Rechts‘ Funktion aktivieren Sie das Datum aus dem Dateinamen der aktuellen Datei ziehen öffnen dann fügen Sie ihn in die Name des statischen Berichts, auf den ich verweise? wie zum Beispiel:

Dim ReportDate As String 

ReportDate = Right(ThisWorkbook.FullName,12) 

Dim ReportName As String 

ReportName = "Example Report " 

Windows(ReportName + ReportName).Activate 
+0

Betrachten Sie Regular Expressions, um die erforderlichen Mustervergleiche für die Dateinamen durchzuführen. Wenn ich später Zeit bekomme (und niemand hat es schon getan), werde ich eine ausführlichere Antwort für Sie zusammenstellen – Dave

Antwort

0

könnten Sie den Benutzer auffordern, die Dateien auszuwählen, in gewisser Weise ein gültiges Datum des Erhaltens (vielleicht ein Kalendersteuerelement) und dann die Verweise auf diese Arbeitsmappen im Code zu verwenden, zu öffnen oder zu verwenden.

Der folgende Code fragt nach dem Speicherort der Datei (mit der Funktion GetFile1) und öffnen Sie diese. Es wird dann die Datei mit dem heutigen Datum auf dem Desktop des Benutzers öffnen (GetFile) - übergeben Sie einfach ein anderes Datum für eine andere Datei.

Es wird dann den Wert aus Zelle A1 in den beiden Arbeitsmappen abrufen und diese Werte in Zellen A1: A2 der Arbeitsmappe, die den Code enthält, platzieren.

Public Sub Test() 

    Dim wrkBk1 As Workbook 
    Dim wrkBk2 As Workbook 

    Set wrkBk1 = Workbooks.Open(GetFile1) 
    Set wrkBk2 = Workbooks.Open(GetFile(Date)) 

    'ThisWorkbook is the file containing this code. 
    With ThisWorkbook.Worksheets("Sheet1") 
     .Cells(1, 1) = wrkBk1.Worksheets("Sheet1").Cells(1, 1) 'Get the value from A1 and place in A1. 
     .Cells(2, 1) = wrkBk2.Worksheets("Sheet1").Cells(1, 1) 'Get the value from A1 and place in A2. 
    End With 

End Sub 

Function GetFile1(Optional startFolder As Variant = -1) As Variant 
    Dim fle As FileDialog 
    Dim vItem As Variant 
    Set fle = Application.FileDialog(msoFileDialogFilePicker) 
    With fle 
     .Title = "Select a File" 
     .AllowMultiSelect = False 
     .Filters.Add "Excel Files", "*.xls*", 1 
     If startFolder = -1 Then 
      .InitialFileName = Application.DefaultFilePath 
     Else 
      If Right(startFolder, 1) <> "\" Then 
       .InitialFileName = startFolder & "\" 
      Else 
       .InitialFileName = startFolder 
      End If 
     End If 
     If .Show <> -1 Then GoTo NextCode 
     vItem = .SelectedItems(1) 
    End With 
NextCode: 
    GetFile = vItem 
    Set fle = Nothing 
End Function 


Function GetFile(dDate As Date) As Variant 

    GetFile = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Example Report " & Format(dDate, "dd.mm.yyyy") & ".xls" 

End Function 
Verwandte Themen