Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel 自动化错误-2147221080(80040188)_Excel_Vba - Fatal编程技术网

Excel 自动化错误-2147221080(80040188)

Excel 自动化错误-2147221080(80040188),excel,vba,Excel,Vba,我打算执行一个VBA宏,该宏返回路径引用的文件的C34单元格值,该路径的图纸名称如MyHeaders中所示 Sub Test() Dim myHeadings() As String Dim i As Long Dim path As String path = "C:\pathtofile\file.xlsx" Dim currentWb As Workbook Set currentWb = ActiveWorkbook Dim openWb As Workboo

我打算执行一个VBA宏,该宏返回路径引用的文件的C34单元格值,该路径的图纸名称如MyHeaders中所示

Sub Test()
  Dim myHeadings() As String
  Dim i As Long
  Dim path As String
  path = "C:\pathtofile\file.xlsx"
  Dim currentWb As Workbook
  Set currentWb = ActiveWorkbook
  Dim openWb As Workbook
  Set openWb = Workbooks.Open(path)
  Dim openWs As Worksheet

  myHeadings = Split("Januari,Februari,Mars", ",")

  For i = 0 To UBound(myHeadings)
    Set openWs = openWb.Sheets(myHeadings(i))

    currentWb.Sheets("Indata").Range("AA" & 73+Application.Match   (myHeadings(i),Array,False)).Value = openWs.Range("C34").Value

  Next i
End Sub
但是,这会在代码段处显示错误消息:自动化错误-2147221080(800401a8):

 currentWb.Sheets("Indata").Range("AA73+Application.Match   (i,Array,False)").Value = openWs.Range("C34").Value
我是VBA新手,还没有创建一个实际可运行的宏,所以原因可能很简单。通过谷歌搜索,我还没有找到解决这个问题的方法


编辑了一些代码以删除“Array”并更新了t

我想您需要这样:

currentWb.Sheets("Indata").Range("AA" & 73 + Application.Match(i,Array,False)) = openWs.Range("C34") 
如果结果

Application.Match(i,Array,False)
等于1,您想使AA74等于openws.Range(“C34”)中的任何值,对吗

“&”是一个浓缩字符,所以我们上面说的是,我们取“AA”,然后计算73+1,并将其连接到末尾。您缺少的是转义“AA”后面的文本以进行数值计算

编辑:-

在阅读了以上Aiken的评论后,我认为您的答案应该是完全删除匹配函数:

currentWb.Sheets("Indata").Range("AA" & 73 + i + 1).Value = openWs.Range("C34").Value

您是否使用
Currentwb
引用运行宏的工作簿或打开的工作簿?如果我正确理解了您试图实现的目标,我认为
currentWb
指的是
file.xlsx
,而不是宏工作簿?这是不正确的
“范围(AA73+Application.Match(I,Array,False)”
-您可能指的是
Range(“AA73”)+Application.Match(I,Array,False)
@JLILIAmen谢谢你的回复!我正在打开一个工作簿,我使用Alt+F11从那里启动宏。我在项目中有一个与“currentWb”同名的模块。这是真的吗?你从哪里知道currentWb指的是文件.xlsx?我不是指
数组(“一月”、“二月”、“火星”)
语句,而是在
应用程序.Match()
函数调用中使用
数组
这个词。您使用它来分配数组是完全正确的。
i
不是相应元素的索引吗?为什么要费心费事去处理
应用程序.Match()的麻烦呢
查找您已经知道的内容?您的字面意思是“我想查找索引为I的项目的索引”是的,这就是我的本意!尽管如此,这再次给了我语法错误,即使我复制粘贴了你的代码片段。请参阅我答案的编辑部分,如果这样做了,我会将其编辑成一部分答案谢谢解释。这仍然在同一行中给出语法错误。