我正在尝试创建另一个工作簿中的单元格的单元格引用。在下面的代码中,我使用工作簿名称和工作表名称的变量。
SourceFileNamePath
=我链接到的工作簿的路径和名称SourceTab
=我要链接到的工作簿中的标签虽然代码运行正常,但生成的公式无效。有没有人对我是否正确引用SourceFileNamePath
和SourceTab
有任何想法?
代码如下:
Cells(destStartRow, destStartCol).FormulaR1C1 = "='[" & SourceFileNamePath & "]" & SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol
答案 0 :(得分:3)
访问外部工作簿中工作表中单元格的格式是
'path\[filename]sheetname'!cell_reference
因此,如果您有一个名为SourceFileNamePath
的变量,其中包含路径和文件名(例如"C:\Temp\Data\Book1.xlsx"
),那么您需要将文件名与路径分开。
您可以使用以下内容:
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
注意:如果路径或文件名包含任何单引号(例如,如果文件名为Sukhbir's test file.xlsx
),则需要对其进行转义(即每个单引号需要由两个单引号替换)单引号)。这可以通过使用Replace
函数来实现,例如:
Cells(destStartRow, destStartCol).FormulaR1C1 = _
"='" & Replace(SourceFilePath, "'", "''") & _
"[" & Replace(SourceFileName, "'", "''") & "]" & _
SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol