Страницы: 1
RSS
Некорректно работают макросы, если они запускаются с флешки
 
Здравствуйте!  
Помогите, пожалуйста, советом.  
У меня есть базы, которые хранятся на флешке, работаю я тоже на флешке. Такая вот политика в моей организации.  
Записываю макросы, которые обращаются к базам с флешки и они некорректно работают. Если все сохранить на C:/, то те же макросы чудесным образом начинают работать.  
Что может быть не так?
 
А пример этих чудо-файлов? А то по вашему чудесному описанию что-нибудь порекомендовать сложно.
 
Маршруты. У флешек скользящее имя диска. Без Вашего проекта, посоветовать что либо конкретное сложно...
 
"Разгуляться негде - королевство маловато"  
 
А сколько свободного места у вас на флешке и  
каков размер вашего файла?
 
Простейший пример во вложении.  
Есть файл Вариант1, где нужно перевести наименование на английский язык. Есть файл Перевод из которого берутся значения.  
Я записываю макрорекордером макрос, который с помошью функции ВПР эти значения подставляет. Но мне нужно, чтоб макрос протягивал формулу до "конца таблицы". Поэтому при записи я включаю "относительные ссылки", и не просто ручками протягиваю написанную в первой ячейке формулу, а стрелкой влево перехожу в соседний столбец, ctrl+стрелка вниз перехожу в конец таблицы, стрелкой вправо перехожу в нужный мне столбец, ctrl+shift+стрелка вверх выделяю все ячейки в столбце включая формулу, ctrl+d копирую формулу на весь столбец. Делаю я это все, для того, чтобы макрос работал для таблицы любой длины.  
Теперь, собственно, к флешке. Если я все это проделываю на диске C, то макрос прекрасно работает для таблицы любой длины. Однако, если и файл и база оказываются на флешке, то макрос осуществляет перевод, но ровно на столько ячеек вниз, сколько их было в таблице, когда я записывала макрос...  
Это меня застопорило на середине идеи )))) Справиться своими силами с такой несправедливостью я не могу... Помогите, кто чем может )  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
{quote}{login=Kuzmich}{date=09.02.2012 09:24}{thema=Re}{post}"Разгуляться негде - королевство маловато"  
 
А сколько свободного места у вас на флешке и  
каков размер вашего файла?{/post}{/quote}  
 
Места свободного, на данный момент, около 1 гига. Файлы пустяшные не больше 1 мега, базы тоже маленькие некоторые сохранены в .xlsb, до 5 мегов.
 
В файлах ни формул, ни кода нету. Зато пустой файл 2,5мб весит. Ваше вложение удалят, велик размер. Удалите в файле строки ниже данных, он будет весить неупакованным 60кб.
Я сам - дурнее всякого примера! ...
 
собственно, кода в файлах я не нашёл.  
 
для вашего вопроса достаточно вычислять последнюю строку в конкретном (из значений которого будет впр...)  
как-то так  
 
dim rowmax as long, j as long, i as long,  
dim SHH as object  
set SHH = thisworkbook.sheets("Имя листа") 'задаём лист  
set SHH = thisworkbook.sheets("Имя листа") 'задаём лист  
j = 1 'столбец А в к-м значения для впр  
rowmax = SHH.Cells(SHH.Rows.Count, j).End(xlUp).Row 'последняя строка в столбце j  
 
FOR i=2 to rowmax 'со второй строки по последнюю  
with Worksheets("имя книги в к-й список").sheets("название листа где список")  
SHH.cells(i,2).value = application.worksheetfunction.vlookup(SHH.cells(i,1), Range(.columns(1),.columns(2)),2,0)  
end with  
next i
 
{quote}{login=KukLP}{date=09.02.2012 11:28}{thema=}{post}В файлах ни формул, ни кода нету. Зато пустой файл 2,5мб весит. Ваше вложение удалят, велик размер. Удалите в файле строки ниже данных, он будет весить неупакованным 60кб.{/post}{/quote}  
Прошу прощения за тяжелый файл, исправила. Добавила формулу. В итоге файл Вариант1, это то, как он должен выглядеть после работы макроса. Суть самого моего макроса и есть добавление формулы во все строки до конца таблицы столбца B. Как сохранить код - не знаю. Записываю макрос простейшим способом, с помощью функции Разработчик/Запись макроса. Как именно я это делаю - описала выше... Что я делаю не так?
 
Library rat! Вам не первый раз, емнип, советуют присмотреться к оформлению данных списком (97-2003) или таблицей (07/10)... ;) -76129-
 
{quote}{login=Jack}{date=09.02.2012 11:35}{thema=}{post}собственно, кода в файлах я не нашёл.  
 
для вашего вопроса достаточно вычислять последнюю строку в конкретном (из значений которого будет впр...)  
как-то так...  
...  
FOR i=2 to rowmax 'со второй строки по последнюю  
with Worksheets("имя книги в к-й список").sheets("название листа где список")  
SHH.cells(i,2).value = application.worksheetfunction.vlookup(SHH.cells(i,1), Range(.columns(1),.columns(2)),2,0)  
end with  
next i{/post}{/quote}  
 
Ужас, надо пойти поучиться еще...
 
В одну строку:  
Sub www()  
   Range("B2:B" & Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = _  
       "=VLOOKUP(RC[-1],'" & ThisWorkbook.Path & "\[Перевод.xls]Перевод'!R2C1:R400C2,2,0)"
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=Z}{date=09.02.2012 11:47}{thema=}{post}Library rat! Вам не первый раз, емнип, советуют присмотреться к оформлению данных списком (97-2003) или таблицей (07/10)... ;) -76129-{/post}{/quote}  
 
Как красиво работает!... Можно вечно любоваться на огонь, воду и работу этого макроса.  
Осталось понять как это вытащить наружу и применить к 100500 моим рабочим формулам )) Надо, все же пойти поучиться писать макросы  
Z, Вы говорите загадками %), хотя, я конечно прислушаюсь, к Вашему совету.
Страницы: 1
Читают тему
Наверх