2017-12-21 16 views
2

Wie weisen Sie einer Zelle in einer anderen Excel-Datei auf demselben Laufwerk, aber in einem anderen Ordner eine Formel zu (die Daten aus einer anderen Datei auf dem Netzlaufwerk liest, ohne sie zu öffnen)?Excel-Zelle mithilfe von VBA Formel zuweisen

Endbenutzer verfügen über Zugriffsrechte für alle Ordner auf dem Netzlaufwerk, sodass Benutzername und Kennwort nicht erforderlich sind.

Ich bin neu in VBA und versuchte, das folgende Stück Code zu verwenden, sondern wurde aufgefordert, die Datendatei zu lokalisieren und öffnen:

Dim Network_Path As String 

Network_Path = "\\MyNetworkDrive\folder\subfolder" 

With ThisWorkbook.Sheets("Sheet1") 
    .Range("C2").Formula = "=SUM('Network_Path\[Source_File.xlsx]Data'!$B$2:$B$20)" 
End With 

Antwort

2

Versuchen Sie, die NetworkPath als Variable in der Formel zu schreiben:

.Range("C2").Formula = "=SUM(" & Network_Path & "\[Source_File.xlsx]Data'!$B$2:$B$20)" 

die allgemeine Debugging der Formel mit Variablen betrifft, so versuchen, die folgenden einfachen Trick:

Dann sehen, was im unmittelbaren Fenster vorhanden ist. Drücken Sie Ctrl + G, um es zu öffnen. Das Ergebnis aus der aktuellen Formel:

=IFERROR(INDEX('C:\Users\[Source_File.xlsx]Data'!A:A; MATCH('Sheet1'!C3;'C:\Users\[Source_File.xlsx]Data'!R:R; 0)); ") 

So müssen Sie wahrscheinlich einen Weg finden, die letzten " Zeichen zu entfernen: enter image description here

Dann versuchen, die Formel zu Ihrer Excel-Datei und wenn es zu kopieren funktioniert, dann ist es ok.


Eine andere Möglichkeit ist, das genaue Gegenteil zu versuchen. ZB schreiben Sie die Formel in Excel, wie es geschrieben werden sollte und stellen Sie sicher, dass es funktioniert. Dann wählen Sie die Zelle mit der Formel, und führen Sie die folgenden:

Public Sub PrintMeUsefulFormula() 

    Dim myFormula As String 
    Dim myParenth As String 

    myParenth = """" 

    myFormula = Selection.Formula 
    myFormula = Replace(myFormula, """", """""") 

    myFormula = myParenth & myFormula & myParenth 
    Debug.Print myFormula 

End Sub 

Es wird die Formel in dem sofortigen Fenster drucken, wie es in VBA verwendet werden soll. Dann ersetzen Sie den Pfad durch eine Variable und versuchen Sie es.

+0

Danke Vityata. Ihre Lösung funktioniert gut, aber ich bekomme jetzt einen Laufzeitfehler beim Versuch, eine kompliziertere Formel zuzuweisen: .Range ("C3"). Formula = "= IFERROR (INDEX ('" & Network_Path & "\ [Source_File.xlsx ] Daten '! A: A; MATCH (' Sheet1 '! C3;' "& Netzwerk_Pfad &" \ [Source_File.xlsx] Data '! R: R; 0)); "") " – Jasu

+0

@Jasu - siehe Bearbeiten . – Vityata

+0

Danke nochmal. Ich habe versucht, die zweite Option, aber ich habe 'Typ nicht übereinstimmung' Laufzeitfehler, das Debugging zeigt auf diese Zeile: myFormula = Selection.Formula – Jasu