2017-09-13 8 views
2

Ich versuche, einen Zellbezug zu einer Zelle in einer anderen Arbeitsmappe zu erstellen. In meinem Code unten verwende ich eine Variable für Arbeitsmappename und Blattname.VBA-Formel: Variabler Dateiname und variabler Blattname

  • SourceFileNamePath = Pfad und Name der Arbeitsmappe Ich Verknüpfung mit
  • SourceTab = Tab in der Arbeitsmappe ich

verknüpfen möchten Obwohl der Code gut läuft, erzeugt die Formel funktioniert nicht. Hat jemand irgendwelche Gedanken darüber, ob ich SourceFileNamePath und SourceTab richtig referenziere?

-Code ist unten:

Cells(destStartRow, destStartCol).FormulaR1C1 = "='[" & SourceFileNamePath & "]" & SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 
+1

Nur die Datei ** Name ** sollte in Klammern gesetzt werden - z.B. '= 'C: \ Temp \ Daten \ [Book1.xlsx] Blatt2'! R5C10'. (Siehe [diese Frage] (https://stackoverflow.com/q/46162966/6535336) für eine mögliche Art der Einrichtung.) – YowE3K

Antwort

3

Das Format einer Zelle in einem Blatt in einer externen Arbeitsmappe

'path\[filename]sheetname'!cell_reference

ist so zugreifen, wenn Sie eine Variable SourceFileNamePath enthält den Pfad genannt haben und Dateiname (zB "C:\Temp\Data\Book1.xlsx") dann müssen Sie den Dateinamen vom Pfad trennen.

Sie so etwas wie verwenden:

SourceFileNamePath = "C:\Temp\Data\Book1.xlsx" ' or however you set that variable 
SourceTab = "Sheet1"        ' or however you set that variable 

Dim SourceFilePath As String 
Dim SourceFileName As String 
SourceFilePath = Left(SourceFileNamePath, InStrRev(SourceFileNamePath, Application.PathSeparator)) 
SourceFileName = Mid(SourceFileNamePath, InStrRev(SourceFileNamePath, Application.PathSeparator) + 1) 
Cells(destStartRow, destStartCol).FormulaR1C1 = "='" & SourceFilePath & "[" & SourceFileName & "]" & SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 

Hinweis: Wenn entweder der Pfad oder der Dateiname keine Einzel Anführungszeichen enthält (zB wenn der Dateiname Sukhbir's test file.xlsx war), dann wird es entwertet werden müssen (dh jede Anführungszeichen muss durch zwei einfache Anführungszeichen ersetzt werden). Dies kann durch die Verwendung der Replace Funktion erreicht werden, z.B .:

Cells(destStartRow, destStartCol).FormulaR1C1 = _ 
           "='" & Replace(SourceFilePath, "'", "''") & _ 
           "[" & Replace(SourceFileName, "'", "''") & "]" & _ 
           SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 
+0

Vielen Dank, das hat perfekt funktioniert! Ich habe gestern über 3 Stunden damit verbracht, das herauszufinden, ich bin froh, dass ich um Hilfe gebeten habe. :) Danke nochmal für deine Hilfe. –