Vba Excel外部工作簿参考

Vba Excel外部工作簿参考,vba,excel,Vba,Excel,我有一个工作表,需要引用一个已关闭或已打开(最好是已关闭)的外部工作簿,以便在上面传输单元格值 外部工作簿位于: C:\Users\User1\Desktop\Folder1 它被称为“Page.xls” 我的代码: dim tmpCell as range set tmpCell = Sheet3.("A1") tmpCell.Value = '... Dunno what to put right here 等号后面的空间是我要放置外部引用工作簿/单元格的位置。您能试试: tmpcell

我有一个工作表,需要引用一个已关闭或已打开(最好是已关闭)的外部工作簿,以便在上面传输单元格值

外部工作簿位于:

C:\Users\User1\Desktop\Folder1

它被称为“Page.xls”

我的代码:

dim tmpCell as range
set tmpCell = Sheet3.("A1")

tmpCell.Value = '... Dunno what to put right here
等号后面的空间是我要放置外部引用工作簿/单元格的位置。

您能试试:

tmpcell.formula = "='C:\Users\User1\Desktop\Folder1\[Page.xls]Sheet1'!A1"
如果这确实有效,那么最好的情况是,如果您移动或弄乱了源工作簿,您仍然会遇到问题,即使您没有移动或弄乱源工作簿,我认为Excel仍然有一种行为异常的倾向,即引用其他类似的工作簿

其他选项包括(首先确保源工作簿已关闭)打开工作簿,复制值,然后关闭:

dim tmpCell as range
set tmpCell = ThisWorkbook.Worksheets("Sheet3").Range("A1")

dim sourceWorkbook as Workbook
set sourceWorkbook = Workbooks.Open("C:\Users\User1\Desktop\Folder1\Page.xls")
dim sourceWorksheet as Worksheet
set sourceWorksheet = sourceWorkbook.Worksheets("Sheet1")

tmpCell.Value = sourceWorksheet.range("A1").Value

Application.DisplayAlerts = False
sourceWorkbook.Close
Application.DisplayAlerts = True

最后一个选项是与工作簿建立ODBC连接-我喜欢第二个选项,尽管我从未找到访问已关闭Excel文件的方法。以下是打开文件、复制值和关闭文件所需的内容

dim tmpCell as range
set tmpCell = Sheet3.("A1")
set myFile = "C:\Users\User1\Desktop\Folder1\page.xls"
set myFileName = "page"
set mySheetName = "Sheet1"
set myRange = "A1"

workbooks.open fileName:=myFile
tmpCell.Value = Workbooks(myFileName).Sheets(mySheetName).range(myRange).value
workbooks.close fileName:=myFile

您可以通过两种方式完成:

tmpCell.FormulaR1C1 = "='C:\path\[workbook.xls]Sheet1'R1C2"

'Or alternatively:
tmpCell.Formula = "='C:\path\[workbook.xls]Sheet1'B1"
了解更多关于这方面的信息