【问题标题】:Run-time error 13 in renaming book重命名书时出现运行时错误 13
【发布时间】:2018-12-12 13:26:58
【问题描述】:

有 book1 ,其中一列是旧书的名称,另一列是新书的名称(旧书需要在新书中重命名)。 n,m-数字。

发生错误:

运行时错误‘13’行中的类型不匹配

OldName = "" + n + ".xlsm"

代码:

    Sub Кл()

    Dim OldName, NewName
    Dim book1 As Workbook
    Dim t As Long, m As Long, n As Long


    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False

     Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 
           7\вспомогательные программы\Книга в лист\виз.xlsx")
     For t = 3 To 5

      n = book1.Worksheets("общ").Range("C" & t).Value
      m = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value

      OldName = "" + n + ".xlsm"
      NewName = "" + m + ".xlsm"

      Name OldName As NewName

      OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 
            7\вспомогательные программы\Книга в лист\Отборные 
            условия\Откуда\" + n + ".xlsm"
      NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 
              7\вспомогательные программы\Книга в лист\Отборные 
             условия\Куда\" + m + ".xlsm"

      Name OldName As NewName

      Next t
      book1.Close

      Application.ScreenUpdating = True
      Application.Calculation = xlCalculationAutomatic
      Application.EnableEvents = True

      End Sub

【问题讨论】:

  • 如果将 OldName 设为字符串会发生什么?
  • 使用& 连接字符串。否则 Excel 可能需要用 + 计算:OldName = "" & n & ".xlsm"

标签: vba excel runtime-error renaming


【解决方案1】:

我会尝试Dim oldName As String,因为您正在处理字符串,然后使用& 连接,而不是+

您可以将n 显式转换为CStr(n),而不是让它被隐式转换。

一开始"" + 的意义何在?它不会添加任何东西。只需Cstr(n) & ".xlsm" 就足够了。

n 必须包含完整的文件路径,因为Name 函数需要位置 和文件名。

Name statement:

旧路径名 必需。指定现有的字符串表达式 文件名和位置——可能包括目录或文件夹,以及驱动器。

新路径名 必需。指定新文件的字符串表达式 名称和位置 — 可能包括目录或文件夹以及驱动器。这 newpathname 指定的文件名不能已经存在。

【讨论】:

  • 这个错误消失了,但是新出现在第一个行(第一个) Name OldName As NewName R-t error 53 file not found
  • 旧文件名是否存在?
  • 是的 (1.xlsm ,4.xlsm ...)
  • 您需要单元格中的完整文件路径。
【解决方案2】:

我认为+ 应该是&。行应该是

oldname = "path\filename" & n & ".xlsm" 

可能cstr(n)text(n , "format") 也可以这样做

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2014-11-04
    • 1970-01-01
    • 2021-06-29
    • 2021-01-08
    • 2020-06-08
    • 1970-01-01
    • 2012-10-31
    • 2016-11-27
    相关资源
    最近更新 更多