AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1563994
Accepted
candez
candez
Asked: 2020-06-26 22:44:50 +0800 CST2020-06-26 22:44:50 +0800 CST 2020-06-26 22:44:50 +0800 CST

从多个命名范围中删除外部链接的任何快速方法?

  • 772

有没有一种有效的方法可以从命名范围中删除外部链接(或完全阻止它们的方法)?

我有一个跟踪电子表格,我使用并部署到多个客户端。他们使用电子表格来跟踪数据,然后每隔几个月将表格提交给我进行审查。我会定期向电子表格上的新选项卡添加一个功能,并在每个客户的副本中填充它。

当我将新选项卡复制到客户端电子表格中时,它会将外部链接带回模板。这些很容易在公式中删除,但它们也总是以 20 个左右的命名范围结束。

我最终手动遍历 20 个命名范围以单独删除每个外部链接。这是有问题的,因为 Word 的命名范围界面很狭窄,并且在几百个字符后就会关闭公式。只需要几个外部链接就可以使一个中等大小的公式变得很长,这意味着公式会被截断,我必须完全重新创建公式才能删除外部链接。

有没有更有效的方法来做到这一点?是一种防止命名范围引入外部链接的方法,还是一种从多个命名范围中快速删除链接的方法?

microsoft-excel named-ranges
  • 2 2 个回答
  • 654 Views

2 个回答

  • Voted
  1. Best Answer
    Justin Doward
    2020-06-28T22:16:37+08:002020-06-28T22:16:37+08:00

    您是否尝试过制作选项卡的副本,然后删除原始选项卡而不是移动选项卡?右键单击选项卡和“移动或复制”,然后确保选中“创建副本”复选框并从下拉列表中选择要复制到的书,这应该可以防止命名范围的工作表之间的任何链接。

    在此处输入图像描述

    对于命名范围,您可以尝试以下代码:

    Option Explicit
    
    Sub NmChnger()
    Dim Nm As Name
    Dim Strt As Long, Finish As Long
    Dim MyStr As String, MyMid As String
    
    For Each Nm In Names
    If InStr(Nm, "[") > 0 Then
    MyStr = Nm
    Strt = InStr(Nm, "[")
    Finish = InStr(Nm, "]")
    MyMid = Mid(Nm, Strt, Finish - Strt + 1)
    Nm.RefersTo = Application.WorksheetFunction.Substitute(Nm, MyMid, vbNullString)
    Debug.Print MyStr & " was changed to " & Nm
    End If
    Next Nm
    
    End Sub
    

    ALT + F11 应该打开您的开发人员编辑器,插入一个模块,然后在模块中输入代码。使“立即”窗口从视图菜单中可见,然后通过将光标放在代码中并按下绿色播放按钮(或将其链接到工作簿中的按钮)来运行代码

    它可能需要一些改进,但可能会按原样工作,一旦你运行它,从即时窗口复制文本,如果有任何需要修改的地方发回这里。

    注意 - 我刚刚在您的原始问题中看到您的评论,暗示您的格式是“链接”而不是 [链接]。如果是这种情况,您应该能够更改:

    Strt = InStr(Nm, "[")
    Finish = InStr(Nm, "]")
    

    至

    Strt = InStr(Nm, "'")
    Finish = Len(Nm) - InStrRev(Nm, "'")
    

    不知道为什么您的格式与我得到的不同,可能需要进一步排除故障,因为您可能需要在某处调整 + 或 - 1。

    • 0
  2. Fr Gerry OMI
    2021-08-29T01:37:10+08:002021-08-29T01:37:10+08:00

    谢谢楼上的回答。我已经改进了它,因为上面的答案没有删除文件名 PATH。我还添加了更改文件名的选项,然后检查以继续。感谢人们给出的所有答案。

    Option Explicit
    Sub NamedRangeFileNameRemover()
    '
    '   Appreciation and Acknowledgment to SUPERUSER site
    '   https://superuser.com/questions/1563994/...
    '           ...any-quick-way-to-remove-external-links-from-multiple-named-ranges
    '       problem is it keeps asking for a new name...
    '       when we want to remove filename link completely
    '
    '   Modified by Fr Gerard Conlan OMI - 28-Aug-2021
    '   Removes or Replaces Filename Link
    '   Prompts for an alternative Filename (or leave BLANK to remove)
    '
    Dim Nm As Name
    Dim Strt As Long, Finish As Long
    Dim MyStr As String, MyMid As String, MyReplace As String
    Dim Title As String
    '
    Title = "Named Range: Filename Remove or Replace"
    '
    'eg. file name link      ='P:\Documents\[PAYMENT Template.xlsx]Accounts'!$A$1:$E$177
    '    After removed       ='Accounts'!$A$1:$E$177
    '    EXCEL Autocorrected =Accounts!$A$1:$E$177
    '
    For Each Nm In Names
        If InStr(Nm, "]") > 0 Then
        MyStr = Nm
            Strt = InStr(Nm, "[")   'This does not include the filename PATH
            Finish = InStr(Nm, "]")
    '       MyReplace = vbNullString
                Strt = 2            'This includes the filename PATH
                If MyReplace = "" Then  'First Occurrence of a Named Range with a Filename
                    MyMid = Mid(Nm, Strt + 1, Finish - Strt) 'excludes leading "'"
                    MyReplace = InputBox("Enter New Filename or " & vbCrLf & _
                                          "leave blank to remove the filenames completely" & vbCrLf & _
                                          vbCrLf & "Current Filename= " & vbCrLf & vbCrLf & _
                                          MyMid, _
                                     Title, _
                                         "")
                    If MsgBox("Continue: Are you Sure?" & vbCrLf & vbCrLf & _
                               MyReplace, _
                              vbOKCancel, Title) = vbCancel _
                              Then End
                    MyReplace = "'" & MyReplace
                End If
                MyMid = Mid(Nm, Strt, Finish - Strt + 1)
            Nm.RefersTo = Application.WorksheetFunction.Substitute(Nm, MyMid, MyReplace)
            Debug.Print MyStr & " was changed to " & Nm
        End If
    Next Nm
    '
    End Sub
    
    • 0

相关问题

  • 带有“和”运算符的 Excel 数据透视表

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve