gpt4 book ai didi

excel - 为什么新打开的 Workbook.Name 与 Excel 窗口中的 Workbook 标题不同?

转载 作者:行者123 更新时间:2023-12-04 20:28:02 27 4
gpt4 key购买 nike

我创建了一个文件并将其引用为 GlobalFile .
然后我将它保存为“Glo”,然后保存为“Ume”。然后我重新打开保存的文件,以在两个不同的 Workbook 对象中以两个不同的名称打开两个不同的工作簿:GlobalFileNightMareFile .

打开后,Excel 窗口的正确标题分别为“Glo.xls”和“Ume.xls”,但测试 NightMareFile.Name结果为“Glo.xlsx”!

这怎么可能呢?

我在 Win 10 64 位,Excel 365 16 位。

已经尝试过:

  • 打开之前或之后的 DoEvents
  • 打开后全部刷新
  • Excel 重新启动没有带来任何变化。

  • 是什么让我抓狂:更改两个打开 block 的顺序修复了名称冲突:如果首先打开“Ume”,它具有正确的名称,“Glo”也是如此。

    最初我保存并重新打开了更多命名文件版本,但只有这个版本总是有问题,因此有了新名称:NightMareFile。不管我如何改变打开文件的顺序,这个总是继承在他之前打开的文件名到另一个对象变量中。
    Option Explicit

    Sub main_control_routine()

    Dim GlobalFile As Workbook
    Dim NightMareFile As Workbook

    Set GlobalFile = Workbooks.Add
    Debug.Print "GlobalFile.Name: " & GlobalFile.Name

    Application.DisplayAlerts = False

    GlobalFile.SaveAs Filename:="Glo"
    Debug.Print "GLOBAL File ready!"

    'GlobalFile save as Ume
    GlobalFile.SaveAs Filename:="Ume"
    Debug.Print "GlobalFile.Name: As Ume " & GlobalFile.Name

    Application.DisplayAlerts = True

    'GLOBAL reopened to GlobalFile
    Set GlobalFile = Workbooks.Open("Glo", False)
    Debug.Print "GlobalFile.Name: " & GlobalFile.Name

    'Ume reopened to NightMareFile
    Set NightMareFile = Workbooks.Open("Ume", False)
    Debug.Print "NightMareFile.Name: " & NightMareFile.Name

    End Sub

    最佳答案

    如果与您尝试打开的工作簿同名的工作簿已打开,并且您尝试将工作簿对象变量分配给 Open() 的返回值方法,那么最终的结果可能是不可预测的。

    例如 - 如果我在工作簿“Glo”和“Ume”都已经打开的情况下运行它:

    Sub main_control_routine()

    Dim wb As Workbook

    Set wb = Workbooks.Open("Glo.xlsx", False)
    Debug.Print wb.Name

    Set wb = Workbooks.Open("Ume.xlsx", False)
    Debug.Print wb.Name

    Set wb = Workbooks.Open("Glo.xlsx", False)
    Debug.Print wb.Name

    Set wb = Workbooks.Open("Ume.xlsx", False)
    Debug.Print wb.Name

    End Sub

    ...这是输出:
    Ume.xlsx
    Ume.xlsx
    Ume.xlsx
    Ume.xlsx

    不是你所期望的。

    在我的测试中,它看起来不是获取预期的工作簿,而是返回对上次打开的工作簿的引用。

    解决方法是在使用 Workbooks.Open() 之前始终检查工作簿是否已经打开。得到它的引用。

    关于excel - 为什么新打开的 Workbook.Name 与 Excel 窗口中的 Workbook 标题不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260958/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com