无法使VBA编辑现有的超链接

时间:2019-05-01 16:30:27

标签: excel vba

因此,我正在运行一个将会计日志存档到存档文件夹中的宏,存档后,宏会清除多张纸上的一列以清除会计日志。由于某种原因,当我第一次运行此宏时,一切工作正常,但是链接到服务器上的文件夹的每个超链接都损坏了。最后两个文件夹是正确的,但是当我单击“编辑超链接”时,所有先前的文件夹都变为“ ../../../../../”。因此它看起来像“ ../../../../../Clients/ClientA/”。存档文件具有相同的“ ../../”,但链接有效。

在单击链接时,系统提示我出现以下错误:“无法打开指定的文件。”但是,当我编辑文件并放置文件夹名称而不是“ ../”时,它可以正常工作。我不确定为什么会这样。但是无论单元格G1的每张图纸上是否有每个超链接。所以我写了一个宏来修复链接。

  Sub hyperUpdate()
  Dim wsHyper As Worksheet, addr As String, lastrow As Long, h As Hyperlink

  lastrow = Worksheets("Auto Archive").Range("A" & Worksheets("Auto 
  Archive").Rows.Count).End(xlUp).Row

  For i = 2 To lastrow

  Set wsHyper = Worksheets(Worksheets("Auto Archive").Cells(i, 1).Value)
  wsHyper.Activate
  addr = Worksheets("Auto Archive").Cells(i, 3).Value
  wsHyper.Cells(1, 7).Activate


  Application.ActiveCell.Hyperlinks(1).Address = addr
  MsgBox Application.ActiveCell.Hyperlinks(1).Address

  Next i

  End Sub

因此,消息框每次都说出正确的地址,但是当我单击编辑超链接时,我得到的是相同的“ ../../”,并且该链接仍然不起作用。有什么更好的方法来解决这个问题?谢谢

1 个答案:

答案 0 :(得分:0)

为避免超链接-将文件的路径存储在单元格中(而不是超链接)

然后像在sheet.selection更改过程中一样

import { ActionTypes, AppointmentActions } from '../redux-actions/appointment.ts';


interface AppointmentState {
  startTime: Date;
  endTime: Date;
}

export const initialState: AppointmentState = {
  startTime: null,
  endTime: null
};

export function appointmentReducer(state = initialState, action: AppointmentActions): AppointmentState {
  switch (action.type) {
    case ActionTypes.SetStartTime:
      return {
        ...state,
        startTime: action.startTime
      };

    case ActionTypes.SetEndTime:
      return {
        ...state,
        endTime: action.endTime
      };

    default:
      return state;
  }
}

您还应该远离选定的单元格,以便通过单击它再次将其选中,并且您可能想防止有人通过按住箭头

来释放文件负载