用于在Excel工作簿和函数工作簿之间进行通信的代码

时间:2014-10-02 09:12:28

标签: python excel vba excel-vba

我试图想出一个从两个输入行(y1和y2)读取变量的代码,并在函数中使用那些返回新值(y2')到第三行的代码。即从表工作簿获取值到函数工作簿,并将新值返回到原始表工作簿。通过这样做,我希望我不必为每个输入值创建一个新的功能工作簿/表。这有可能吗? 我一直在试用VBA和Python / xlwings,但没有运气。我自己并不是程序员,而且这个任务看起来如此巨大的原因。任何帮助将不胜感激!

PS的数字可能会使问题更加清晰,但作为一个菜鸟,我不允许发布数据。请在此链接位置找到解释性图片:https://db.tt/AxFG9snn

1 个答案:

答案 0 :(得分:1)

是的,这绝对是可能的,我不是专业程序员,所以我会尽力向您解释代码。您只需要在vba编辑器中编写一个简单的代码。几个月前,我在你的鞋子里。这是一个例子。 此代码从Book1.xlsx获取输入(Sheet1中的单元格A1和B1)计算输出并将其存储回Book1。当前/活动工作簿的公式/函数为C1 = SUM(A1:B1)。

Sub Code()
' Gets input from another workbook
Dim wb1 As Workbook                                                         ' Declaring wb1 and wb2 as variable of type Workbook
Dim wb2 As Workbook

Set wb1 = Workbooks.Open("book1.xlsx")                                      'Note: In order to access data from another workbook, it should be open.
Set wb2 = ThisWorkbook                                                      'ThisWorkbook: refrence to the workbook having this code

wb2.Sheets("Sheet1").Range("A1") = wb1.Sheets("Sheet1").Range("A1")         'Access value stored in cell A1 of sheet1 in book1 and stre it in cell A1 of book2
wb2.Sheets("Sheet1").Range("B1") = wb1.Sheets("Sheet1").Range("b1")

wb1.Sheets("Sheet1").Range("C1") = wb2.Sheets("Sheet1").Range("c1")         'Store the output (cell C1 of book2) in cell C1 of book1

End Sub

您可以轻松地对一系列单元格执行此操作,也可以在偏移中引用单元格。我希望它有所帮助。