2017-01-18 3 views
1

Hallo Ich versuche, ein VBA-Makro zu schreiben, die Excel-Dateien durchsucht und dann die Operation in den Dateien ausführt. Der Code, den ich geschrieben habe, ist wie folgt:VBA Datei durchsuchen und Operationen

Option Explicit 

Sub SelctFile() 
Dim intChoice As Integer 
Dim strPath As String 
Dim i As Integer 

'allow the user to select multiple files 
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True 
'make the file dialog visible to the user 
intChoice = Application.FileDialog(msoFileDialogOpen).Show 
'determine what choice the user made 
If intChoice <> 0 Then 
    'get the file path selected by the user 
    For i = 1 To Application.FileDialog(msoFileDialogOpen _ 
     ).SelectedItems.Count 
     strPath = Application.FileDialog(msoFileDialogOpen _ 
     ).SelectedItems(i) 
     'print the file path to sheet 1 
     Cells(i + 1, 2) = strPath 
    Next i 
End If  
End Sub 


Sub ISIN() 

Dim MSReport As Variant 

MSReport = Range("B2").Value 

Set MSReport = Workbooks.Open(Filename:="MSReport") 
Range("W3:W2500").Formula = "=IF(G3="""","""",BDP(G3&"" Equity"",""ID_ISIN""))" 

End Sub 

Der erste Sub wählt select die Dateien und ich habe den Dateipfad in der Zelle B2. Ich möchte also den Pfad von Zelle B2 in der ISIN verwenden.

Wenn ich die Adresse schreibe funktioniert es, aber ich möchte, dass das Makro automatisch die Adresse übernimmt.

Auch ist es möglich, dass die Änderungen mada sind, ohne das andere Arbeitsblatt zu öffnen.

+0

was meinst du mit _ "aber ich möchte, dass das Makro automatisch die Adresse übernimmt." _? – user3598756

Antwort

2

Sie sollten einfach ein Argument in ISIN verwenden, versuchen Sie es! ;)

Option Explicit 

Sub SelctFile() 
    Dim intChoice As Integer 
    Dim strPath As String 
    Dim i As Integer 

    'allow the user to select multiple files 
    Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True 
    'make the file dialog visible to the user 
    intChoice = Application.FileDialog(msoFileDialogOpen).Show 
    'determine what choice the user made 
    If intChoice <> 0 Then 
     'get the file path selected by the user 
     For i = 1 To Application.FileDialog(msoFileDialogOpen).SelectedItems.Count 
      strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(i) 
      ISIN strPath 
      ''Add other procedures there! 
      'NewProcedure strPath 
     Next i 
    End If 
End Sub 


Sub ISIN(ByVal FilePath As String) 
    Dim MSReport As Excel.Workbook 
    Set MSReport = Workbooks.Open(Filename:=FilePath) 

    MSReport.Sheets("SheetName").Range("W3:W2500").Formula = _ 
      "=IF(G3="""","""",BDP(G3&"" Equity"",""ID_ISIN""))" 

    MSReport.Save 
    MSReport.Close False 
End Sub 
+0

Das Problem ist mit dem ersten Makro Ich wähle auch andere Datei für andere Makros – tombata

+0

@AntonPetrov: Kann ein bisschen mehr darüber klar sein? Sie verwenden das gleiche "Öffnen Dialog" für mehrere Prozeduren auf verschiedenen Unterauswahlen? Wenn es für die gleiche Auswahl ist, müssen Sie sie nur dort hinzufügen, wo ich sie markiert habe! ;) – R3uK

+0

Ich benutze den Öffnen-Dialog, um auch Excel-Dateien zu öffnen, die ich in anderen Makros verwende. – tombata

Verwandte Themen