Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 引用另一工作簿中的单元格。如果值相等,则不刷新查询_Database_Excel_Vba - Fatal编程技术网

Database 引用另一工作簿中的单元格。如果值相等,则不刷新查询

Database 引用另一工作簿中的单元格。如果值相等,则不刷新查询,database,excel,vba,Database,Excel,Vba,它说我有太少的参数预期15。。。这是我刷新前后的一些事情 第一类 Public WithEvents qt As QueryTable Private Sub qt_AfterRefresh(ByVal Success As Boolean) Application.Worksheets("RawDataLines").Range("A1") = Application.Worksheets("RawDataLines").Range("C1") Application.Ru

它说我有太少的参数预期15。。。这是我刷新前后的一些事情

第一类

Public WithEvents qt As QueryTable


Private Sub qt_AfterRefresh(ByVal Success As Boolean)

    Application.Worksheets("RawDataLines").Range("A1") = Application.Worksheets("RawDataLines").Range("C1")
   Application.Run "'Operation Get Ipads.xls'!Assembly1_Button"


End Sub
第二类

Public WithEvents qut As QueryTable

Private Sub qut_BeforeRefresh(Cancel As Boolean)
    Worksheets("RawDataLines").Range("C1") = _
        "='H:\Departments\Manufacturing\Production Links\DashBoard Breakdown\[MASTER_LIVE_STATUS_DATA.xls]Sheet1'!R1C1"
    If Application.Worksheets("RawDataLines").Range("C1") = Application.Worksheets("RawDataLines").Range("A1") Then
    Cancel = True
    End If

End Sub
初始化:

Dim T As New Class1
Dim H As New Class2



Sub Initialize_It()
  Set T.qt = ThisWorkbook.Sheets(3).QueryTables(1)
  Set H.qut = ThisWorkbook.Sheets(3).QueryTables(1)
End Sub
参数通常是
Cancel
,这就是代码所指的内容。将其更改为
取消

您可以将当前工作簿(运行此代码的地方)称为
thiswoolk
。假设它是主版本,则可以使用:

ThisWorkbook.Worksheets("sheet1").Range("A1")
工作簿
集合仅指打开的工作簿,因此您需要临时打开其他工作簿:

Dim wbOther As Workbook

Set wbOther = Workbooks.Open("full path and filename.xlsx", False)
False
参数表示您不希望在打开书籍时更新链接(如果合适)

完成另一本书后,请使用:

wb.Close False    'False says that you do not need to Save Changes
Set wb = Nothing

可以从另一个工作簿中获取单个值,而无需打开和关闭它,但如果该工作簿也有链接,则可能会导致问题:

Debug.Print ExecuteExcel4Macro("'F:\Documents and Settings\student\My Documents\[AndysData7.xlsx]Staff List'!R6C4")

注意,公式需要使用R1C1符号。(而不是
Debug.Print
将值存储在一个变量中。)另外请注意,我不一定推荐这种方法,因为它没有文档记录,但我想在问题的上下文中提及它。

哦,“主”工作簿在运行刷新时不会打开。我需要明确引用该工作簿。我不知道我是否必须把文件的位置放在那里才能做到这一点,或者需要付出什么代价。“我不确定这会起作用。”当你尝试它时会发生什么?(在你尝试之前,你不能乐观。)它不起作用。我不知道这是否是我的参考资料,或者我是否犯了这个错误,“它不起作用”是没有帮助的。您是否收到错误,如果是,是什么?“[Mircosoft][ODBC Excel Driver]参数太少。预计15个”谢谢,我正在做与您文章上最后一个类似的事情。那部分现在很好用。我的参数仍然太少,并且认为我没有正确设置刷新前或刷新后的SUB。我创建了两个类模块来尝试使其工作。还是不会。我将在我的问题中编辑我的代码,以显示我现在拥有的。有一个(简短和旧的)指南。您正在将qt和qut设置为同一个查询表,这听起来不正确。一个常见的问题是没有将代码放入正确的模块中。提示:从一个简单的MsgBox开始,证明事件触发正常;)如果出现“参数太少”错误,请暂时取消您的代码,并确保qt仍在正常更新。我使用的链接与您给我的链接相同。我试着复制它,并且在第一次运行它时只尝试调用表一次。它给了我同样的错误。在这一点上给你建议有点困难。我会删除所有代码,确保查询表都正常工作,并仔细阅读更详细的教程。
Debug.Print ExecuteExcel4Macro("'F:\Documents and Settings\student\My Documents\[AndysData7.xlsx]Staff List'!R6C4")