Поделиться через


Недопустимая длина записи (ошибка 59)

Длина переменной записи в операторах Get или Put должна быть определена в соответствующем операторе Open. Эта ошибка имеет следующие причины и способы решения:

  • Длина переменной записи отличается от длины, указанной в соответствующем операторе Open. Убедитесь, что сумма величин переменных с фиксированной длиной в пользовательском типе, определяющем тип переменной записи, та же, что и значение, указанное в части Len оператора Open. В следующем примере предполагается, что RecVar является переменной соответствующего типа. Используйте функцию Len , чтобы указать длину следующим образом:

    Open MyFile As #1 Len = Len(RecVar) 
    
    
  • Переменная в операторе Put является строкой с переменной длиной или включает в себя такую. Так как двубайтный дескриптор всегда добавляется в строку с переменной длиной, помещенную в файл случайного доступа с помощью оператора Put, строка с переменной длиной должна быть по крайней мере на 2 знака короче длины, указанной в части Len оператора Open.

  • Переменная оператора Put является переменной типа Variant или включает такую. Также как и для строк переменной длины, для типов данных Variant также требуется двубайтный дескриптор. Для переменных типа Variant, содержащих строки переменной длины, требуется четырехбайтный дескриптор. Поэтому длина строки с переменной длиной в Variant должна быть хотя бы на 4 символа короче длины записи, указанной в части Len.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.