循环中的xlOLELink不更新(vba,excel)

时间:2018-09-27 22:31:37

标签: excel vba excel-vba

我正在尝试使用xlOLELinks链接从OLE源导入到excel数据。我的代码在调试模式下或使用断点时都可以正常运行,但是如果我运行它,则不间断的链接并不总是更新,并且会得到

  

类型不匹配错误(运行时错误13)。

我已经尝试过使电子表格处于活动状态,冗余链接更新,采用不同的方式编写相同的代码,但我无法弄清楚……知道我在做什么错吗?

  'Links missing the index and to be completed in the loop
  TimeStr = "DM|Dictionary!JDP_TIME."
  PressureStr = "DM|Dictionary!JDP_TRTPRESS."
  RateStr = "DM|Dictionary!JDP_SLRYRATE."
  Worksheets("Data").Activate

  Row = 1
  While Not ExitFlag
    'Link + index
    ActiveWorkbook.UpdateLink Name:=TimeStr & CStr(Row - 1), Type:=xlOLELinks
    ActiveWorkbook.UpdateLink Name:=PressureStr & CStr(Row - 1), Type:=xlOLELinks
    ActiveWorkbook.UpdateLink Name:=RateStr & CStr(Row - 1), Type:=xlOLELinks

    'Transfering the values to a table
    Cells(Row + 1, 1) = Cells(1, 9)
    Cells(Row + 1, 2) = Cells(1, 10)
    Cells(Row + 1, 3) = Cells(1, 11)

    'Updating the links
    ActiveWorkbook.ChangeLink Name:=TimeStr & CStr(Row - 1), _
                          NewName:=TimeStr & CStr(Row), _
                          Type:=xlOLELinks
    ActiveWorkbook.ChangeLink Name:=PressureStr & CStr(Row - 1), _
                          NewName:=PressureStr & CStr(Row), _
                          Type:=xlOLELinks
    ActiveWorkbook.ChangeLink Name:=RateStr & CStr(Row - 1), _
                          NewName:=RateStr & CStr(Row), _
                          Type:=xlOLELinks

    'Updating the index for the next set of data
    Row = Row + 1

    ' If the last value in column A is zero, break the loop
    LRow = Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(LRow, 1) = 0 Then ExitFlag = True
  Wend


    'Resets links to the initial values
    ActiveWorkbook.ChangeLink Name:=TimeStr & CStr(Row - 1), _
                          NewName:=TimeStr & "0", _
                          Type:=xlOLELinks
    ActiveWorkbook.ChangeLink Name:=PressureStr & CStr(Row - 1), _
                          NewName:=PressureStr & "0", _
                          Type:=xlOLELinks
    ActiveWorkbook.ChangeLink Name:=RateStr & CStr(Row - 1), _
                          NewName:=RateStr & "0", _
                          Type:=xlOLELinks

所以...

这就是我得到的:

|   A  |   B  |   C  |
|    1 | 14.9 |   80 |
|    2 |   20 | #N/A |
| #N/A | #N/A | #N/A |

0 个答案:

没有答案