Страницы: 1
RSS
пропадает имя. офис 2007 связка файлов.
 
<EM>http://webfile.ru/5876617</EM> - 1,5Мб!  
офис2007  
в архиве два файла, для краткости: тз и супер  
 
тз при загрузке открывает супер, берет данные для списков проверки данных и закрывает его.  
 
путь к супер прописан через лента-надстройки-отчет-база.  
 
по кнопке отчет открывается супер и идет манипуляция данными с помощью макроса прописанного в супер же, в модуле Maction_report. в частности нужно скопировать данные, обозначенные в супер именем a_t.. вот тут и начинаются загадки. имя куда-то пропадает. т.е. если просто открыть супер из виндоус, то имя есть, а если по кнопке отчет из тз, то нету..  
 
помогите кто чем может.. может мысль какую, может намек..
Живи и дай жить..
 
Отвечу пока про первый архив.  
По-моему, все нормально.  
Если я правильно понял, конечно.
 
это у же мой обходной маневр.. и там a_t не имя, а  текстовая константа.  
 
а я про имя в диспетчере имен.  
 
другие имена есть, а этого нету. а если отдельно открыть, то все есть.
Живи и дай жить..
 
блин, не получается ссылку сделать :(
Живи и дай жить..
 
спасибо. чего-то непонятное, мож офис такой глючный.. нада переставить
Живи и дай жить..
 
"это у же мой обходной маневр"  
Вот в чем дело. А я-то удивился терминологии.  
 
Во втором архиве все нормально работает, как и у The_Prist.  
Office 2007.  
 
Попробуйте проверить на скрытые имена:  
http://support.microsoft.com/kb/119826/ru  
 
Вот так, например:  
 
  Sub Trace_Hidden_Names()  
 
      ' Dimension variables.  
      Dim xName As Variant  
      Dim Result As Variant  
 
      ' Loop once for each name in the workbook.  
      For Each xName In ActiveWorkbook.Names  
 
          'If a name is not visible (it is hidden)...  
          If xName.Visible = True Then  
              Debug.Print "vidimo", xName.Name  
          Else  
              Debug.Print "nevidimo", xName.Name  
          End If  
 
          ' Loop to the next name.  
      Next xName  
 
  End Sub
 
скрытые тут нипричем.. про диспетчер - это я для ясности. и вот у вас же видно..  
 
я-то есс-но из кода к имени обращаюсь.. типа sh.cells(1)=[a_t].value
 
а оно мне фигвамы рисует
Живи и дай жить..
 
т.е. у меня не то что не видно, а вообще его нет в names
Живи и дай жить..
 
"скрытые тут нипричем"  
да, наверно. Просто предлагаю программно протрэйсить имена.  
Пытаюсь помочь наугад )  
 
"я-то есс-но из кода к имени обращаюсь"  
Вы бы выложили пример обращения (именно, когда возникает ошибка).    
А то 2 архива и оба работают на константах =)  
 
"т.е. у меня не то что не видно, а вообще его нет в names"  
А создаете тоже программно?
 
нет, создаю вручную  
 
если у вас в диспетчере видно, то все нормально, будет работать. у меня не видно ни в диспетчере ни из кода..  
 
значит дело просто в версии(сборке) офиса - у меня и другие глюки есть.  
я вообще не люблю 2007- дома 2003 и 2010. но у клиента 2007
Живи и дай жить..
 
Кстати, Вы с другими именами работаете так:  
sh.Names("b_act").RefersToRange.Offset(1).Copy  
 
А у них у всех область действия - книга.  
Это нормально?
 
нет, не книга  
 
книга только у имен в супер, а в тз  - там на листе. предполагается, что пользователь будет использовать лист как шаблон для создания других листов.. там будут такие же имена и все должно работать с любым листом..
Живи и дай жить..
 
В моем 2007 работает.  
 
Попробуйте переустановить, действительно.  
Странно это все.
 
Хмм, нашел вот такую статью:  
 http://smurfonspreadsheets.wordpress.com/2009/02/24/excel-2007-lost-names/  
Похоже, проблема известна.
 
В сообщении от  
Friday, 27th August, 2010 at 2:32 pm  
Joe Serdakowski предлагает какое-то решение.  
В его коде сейчас лень разбираться.  
Попробуйте, может, Вам подойдет!
 
спасибо, щас почитаю
Живи и дай жить..
 
общая идея понятна - просто записать имена на лист в конце работы, а  в начале след сеанса восстановить.  
 
правда есть одно но... не всегда хочется сохранять книгу после открытия, значит надо проверять на отсутствие изменений и переспрашивать..  
 
_____  
88808
Живи и дай жить..
 
"не всегда хочется сохранять книгу после открытия"  
А зачем Вам это?  
Может, ограничитесь частью про  
"в начале след сеанса восстановить"  
?
 
а если я решу имя добавить? :)  
 
тогда придется добавлять прямо на лист, а там уже по событию изменения листа, оно добавится в коллекцию имен.. но это не есть очень красиво.. зато надежней
Живи и дай жить..
 
Прошу прощения.  
Я думал, Вы работаете над чьим-то заказом.  
В определенный момент разработка заканчивается, список имен фиксируется.  
Все защищается/скрывается. Заказчик далее работает с черным ящиком.
Страницы: 1
Наверх