VBA 从一个工作簿到另一个具有命名单元格的公式
VBA formula from one workbook to another with named cells
我无法使用我的公式。你可以看到我只是想从一个工作簿到另一个工作簿中从另一个值中减去一个值(单元格中有一个公式)。我错过了什么?它在正确的单元格中复制公式但不计算。结果#NAME?。
Sub changeReports()
Dim currentWk As Worksheet
Dim prevYr As Worksheet
Dim prevWk As Worksheet
Dim File_Path As String
Dim Source_Workbook As Workbook
Dim Target_workbook As Workbook
File_Path = "B:\Operations\Aging 031416Wk11.xlsm"
Destination_Path = "B:\Operations\Aging 032116Wk12.xlsm"
Set Source_Workbook = Workbooks.Open(File_Path)
Set Target_workbook = Workbooks.Open(Destination_Path)
Set prevWk = Source_Workbook.Worksheets("2016 Reports")
Set currentWk = Target_workbook.Worksheets("2016 Reports")
currentWk.Activate
' code works to insert formula in cell but formula not working the way it is written
Range("chgBox").formula = "=currentWk.Range(""grBox"")- prevWk.Range(""grBox"")"
End Sub
如果您想要范围 ("chgBox") 单元格中的减法结果,请执行实际计算。
Range("chgBox") = currentWk.Range("grBox") - prevWk.Range("grBox")
如果您希望公式保留在 Range("chgBox") 单元格中,则将 VBA 单元格引用转换为地址并连接一个将代表工作表公式的字符串。
Range("chgBox").Formula = "=" & currentWk.Range("grBox").Address(external:=true) & _
"-" & prevWk.Range("grBox").Address(external:=true)
您收到 #NAME!
错误,因为工作表不理解 currentWk.Range(""grBox"")
是什么。
附录:
我已经 运行 通过了完整的示例测试环境,并且公式和直接结果都按照上面提供的方式工作。我已经清理了下面剩余的代码。
Option Explicit
Sub changeReports()
Dim currentWk As Worksheet
Dim prevWk As Worksheet
Dim filePath As String, destinationPath As String
Dim sourceWorkbook As Workbook, targetWorkbook As Workbook
filePath = "B:\Operations\Aging 031416Wk11.xlsm"
destinationPath = "B:\Operations\Aging 032116Wk12.xlsm"
filePath = Environ("TMP") & "\Aging 031416Wk11.xlsm"
destinationPath = Environ("TMP") & "\Aging 032116Wk12.xlsm"
Set sourceWorkbook = Workbooks.Open(filePath)
Set targetWorkbook = Workbooks.Open(destinationPath)
Set prevWk = sourceWorkbook.Worksheets("2016 Reports")
Set currentWk = targetWorkbook.Worksheets("2016 Reports")
With currentWk
.Range("chgBox") = .Range("grBox") - prevWk.Range("grBox")
'.Range("chgBox").Formula = "=" & currentWk.Range("grBox").Address & _
"-" & prevWk.Range("grBox").Address(external:=True)
End With
sourceWorkbook.Close savechanges:=False
targetWorkbook.Close savechanges:=True
End Sub
我无法使用我的公式。你可以看到我只是想从一个工作簿到另一个工作簿中从另一个值中减去一个值(单元格中有一个公式)。我错过了什么?它在正确的单元格中复制公式但不计算。结果#NAME?。
Sub changeReports()
Dim currentWk As Worksheet
Dim prevYr As Worksheet
Dim prevWk As Worksheet
Dim File_Path As String
Dim Source_Workbook As Workbook
Dim Target_workbook As Workbook
File_Path = "B:\Operations\Aging 031416Wk11.xlsm"
Destination_Path = "B:\Operations\Aging 032116Wk12.xlsm"
Set Source_Workbook = Workbooks.Open(File_Path)
Set Target_workbook = Workbooks.Open(Destination_Path)
Set prevWk = Source_Workbook.Worksheets("2016 Reports")
Set currentWk = Target_workbook.Worksheets("2016 Reports")
currentWk.Activate
' code works to insert formula in cell but formula not working the way it is written
Range("chgBox").formula = "=currentWk.Range(""grBox"")- prevWk.Range(""grBox"")"
End Sub
如果您想要范围 ("chgBox") 单元格中的减法结果,请执行实际计算。
Range("chgBox") = currentWk.Range("grBox") - prevWk.Range("grBox")
如果您希望公式保留在 Range("chgBox") 单元格中,则将 VBA 单元格引用转换为地址并连接一个将代表工作表公式的字符串。
Range("chgBox").Formula = "=" & currentWk.Range("grBox").Address(external:=true) & _
"-" & prevWk.Range("grBox").Address(external:=true)
您收到 #NAME!
错误,因为工作表不理解 currentWk.Range(""grBox"")
是什么。
附录:
我已经 运行 通过了完整的示例测试环境,并且公式和直接结果都按照上面提供的方式工作。我已经清理了下面剩余的代码。
Option Explicit
Sub changeReports()
Dim currentWk As Worksheet
Dim prevWk As Worksheet
Dim filePath As String, destinationPath As String
Dim sourceWorkbook As Workbook, targetWorkbook As Workbook
filePath = "B:\Operations\Aging 031416Wk11.xlsm"
destinationPath = "B:\Operations\Aging 032116Wk12.xlsm"
filePath = Environ("TMP") & "\Aging 031416Wk11.xlsm"
destinationPath = Environ("TMP") & "\Aging 032116Wk12.xlsm"
Set sourceWorkbook = Workbooks.Open(filePath)
Set targetWorkbook = Workbooks.Open(destinationPath)
Set prevWk = sourceWorkbook.Worksheets("2016 Reports")
Set currentWk = targetWorkbook.Worksheets("2016 Reports")
With currentWk
.Range("chgBox") = .Range("grBox") - prevWk.Range("grBox")
'.Range("chgBox").Formula = "=" & currentWk.Range("grBox").Address & _
"-" & prevWk.Range("grBox").Address(external:=True)
End With
sourceWorkbook.Close savechanges:=False
targetWorkbook.Close savechanges:=True
End Sub