Ошибка выполнения 13 в переименовании книги - PullRequest
0 голосов
/ 04 июля 2018

Существует book1, где в одном столбце указаны названия старых книг, а в другом - имена новых (старые необходимо переименовать в новые). п, м-число.

Произошла ошибка:

Ошибка времени выполнения ‘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

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я думаю, что + должно быть &. строка должна читать

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

Возможно cstr(n) или text(n , "format") может сделать то же самое

0 голосов
/ 04 июля 2018

Я бы попробовал Dim oldName As String, так как вы работаете со строкой, а затем используйте & для объединения, а не +.

Вы можете явно преобразовать n с помощью CStr(n) вместо того, чтобы разрешить его неявное преобразование.

А какой смысл "" + на старте? Это ничего не добавит. Достаточно только Cstr(n) & ".xlsm".

n должен содержать полный путь к файлу, так как функция Name требует расположение и имя файла.

Название заявления:

oldpathname Обязательно. Строковое выражение, которое определяет существующий имя и местоположение файла - может включать в себя каталог или папку и диск.

newpathname Обязательно. Строковое выражение, которое определяет новый файл Имя и местоположение - могут включать каталог или папку, а также диск. имя файла, указанное в newpathname, уже не может существовать.

...