Страница: 1 |
Вопрос: жонглирование файлами xls | Добавлено: 12.10.06 23:22 |
Автор вопроса: ![]() |
Sheets("лист").Copy Before:=Sheets(1)
копируем лист с автоподстановкой имени, а как скопировать книгу с автоподстановкой имени? например: в Папке1 есть Книга1, ее нужно переместить в Папку2 под именем например Книга2, а на старом месте удалить. (имена Книг бывают разные) |
Ответы | Всего ответов: 14 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #1 | Добавлено: 12.10.06 23:25 |
нашел как добавить!!!
1 ChDir "C:\ляляля" 2 Workbooks.Add просто? только без первой строки ниче не полуцца! так, переместить данные не проблема... а как вот теперь удалить энту книгу1 с любым именем (она открыта)??? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 13.10.06 00:09 |
Сохранить, закрыть и удалить:
ChDir "C:\ляляля" Set myWb = Workbooks.Add ... myWb.SaveAs FileName:="ля-ля-файл.xls" myWb.Close Kill "ля-ля-файл.xls" |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #3 | Добавлено: 13.10.06 10:35 |
myWb. выдает ошибку
заменил Это на ActiveWorkbook. работает, но... мы открыли книгу1.xls сохранили ее как файл.xls убили файл.xls... смысл: из почты все xls валятся в папку1 под разными именами, оператор их по очереди открывает и обрабатывает, только некоторые пропускает... (блондинка 20 лет, на уме сам знаешь что) надо открыть книгу1.xls, забрать че надо и убить эту же книгу1.xls |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 13.10.06 10:49 |
Тогда вопрос должен был звучать иначе, как мне кажется.
открыть обработать закрыть убить: fPath = "C:\папка1"
nextFile = "книга.xls" Workbooks.Open FileName:=fPath & "\" & nextFile ... обработать, что нужно ... Workbooks(nextFile).Close Kill fPath & "\" & nextFile Чтобы обработать все файлы в папке по циклу, см. Хелп по FoundFiles и Execute и примеры к ним. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #5 | Добавлено: 13.10.06 22:56 |
§Ё§Ц§Я§с,
- §п§д§а §У§г§Ц §д§а§Ш§Ц §г§С§Ю§а§Ц, §е §Ю§Ц§Я§с §Я§Ц§д §Ъ§Ю§Ц§Я§Ъ §ж§С§Ы§Э§С(!) §Ъ §б§в§а§б§Ъ§г§С§д§о nextFile = "§Ь§Я§Ъ§Ф§С.xls" §с §Я§Ц §Ю§а§Ф§е §д.§Ь. §п§д§а §Ю§а§Ш§Ц§д §Т§н§д§о §Ъ "§Ь§Я§Ъ§Ф§С3.xls" §Ъ "§Я§С§Ь§Э§С§Х§Я§С§с777.xls" - §б§в§а §з§Ц§Э§б§С §і§б§С§г§Ъ§Т§а(!) - §Щ§С 5 §г§Ц§Ь §Я§С§к§Ц§Э §з§а§в§а§к§Ъ§Ы §б§в§Ъ§Ю§Ц§в §а§Т§в§С§Т§а§д§Ь§Ъ §ж§С§Ы§Э§а§У §У §б§С§б§Ь§Ц §б§а §и§Ъ§Ь§Э§е §Ј§а§д §г§Ь§С§Ш§Ъ, §С §б§а§й§Ц§Ю§е §Я§Ц §б§а§Э§е§й§С§Ц§д§г§с Sub §Щ§С§Ю§а§й§Ъ§д§о_§д§Ц§Ь§е§л§Ъ§Ы_§ж§С§Ы§Э() ' Ё¤ = ActiveWorkbook.Name ActiveWindow.Close Kill Ё¤ End Sub §У§н§Х§С§Ц§д §а§к§Ъ§Т§Ь§е §Я§С §г§д§в§а§Ь§Ц §е§Т§Ъ§д§о??? |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #6 | Добавлено: 13.10.06 22:58 |
ну вот писал, писал...
а как это теперь стереть? ( |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #7 | Добавлено: 13.10.06 23:04 |
1 совет: не катит - я не знаю имени файла (любое)
2 совет: Спасибо! нашел хорошие решения. вопрос: 'а = ActiveWorkbook.Name 'ActiveWindow.Close 'Kill а почему выдает ошибку на последней строке? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 14.10.06 00:00 |
Нужно указать полный путь к файлу.
Попробуйте так: Kill ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Но это сработает, если только файл книги до этого сохранялся в этом сеансе. Если же не сохранялся, то и Kill не нужен. Просто Close. А чтобы не задавался вопрос "Сохранить?" перед закрытием (если не нужно сохранять), можно сделать так: ActiveWorkbook.Saved = True ActiveWorkbook.Close |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 14.10.06 10:11 |
... слишком сонный был уже, когда писал предыдущее...
На самом деле должно сработать так: a = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.Close 'или как у Вас ActiveWindow.Close Kill a И про "текущий сеанс" - это не принципиально. Главное правильно указать путь и имя к существующему файлу на диске, не важно, сохранялся ли он именно в этом сеансе. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #10 | Добавлено: 16.10.06 15:14 |
Спасибо дорогой друг! ![]() |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #11 | Добавлено: 17.10.06 18:33 |
блин,
при перезагрузке экселя она начинает создавать книги с "книга1"!!! а там уже есть такая... пробовал и 'Workbooks.Add и 'Set myWb = Workbooks.Add все равно книга1 получается... теоретически ChDir должна же была проверить директорию ' Sub новая_книга() ' ChDir "C:\Новая папка" ' Set myWb = Workbooks.Add ' ActiveWorkbook.Save ' ActiveWindow.Close ' End Sub |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 17.10.06 21:58 |
при перезагрузке экселя она начинает
создавать книги с "книга1"!!! а там уже есть такая... пробовал и 'Workbooks.Add и 'Set myWb = Workbooks.Add все равно книга1 получается... теоретически ChDir должна же была проверить директорию Я дико извиняюсь, если покажусь занудой... но вопрос-то в чем собственно? ChDir - не должна проверять директрорию... "у этой функции нет этой функций". Она только делает указанную в ее аргументе директорию текущей. Если такой директории нет, то указанная директория не создается, но в таком случае, в обычных обстоятельствах, VBA выдает сообщение об ошибке. Действительно, при перезапуске Excel заново начинает счетчик новых создаваемых книг, начиная с Книга1.xls. Ничто не мешает перед сохранением очередной новой книги попытаться удалить файл с диска с таким же именем, как у новой, если он уже существует (с помощью того же Kill) и если он уже не нужен. Если нужно предварительно проверить, существует ли директория, куда планируется сохранять файлы, то можно воспользоваться функцией Dir. Можно также проверять, существует ли уже тот или иной файл на диске. Можно запросить генерацию случайного имени, под которым можно будет сохранить новый файл (типа генерации имен для временных файлов). Собственно говоря, можно сделать все, что хочется с файлами на компьютере через VBA... Только нужно точно и конкретно определиться, что именно хочется сделать. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 8 |
Профиль | Цитата | #13 | Добавлено: 18.10.06 09:55 |
прости, торможу, ну конечно Dir делает директорию текущей...
в папке есть несколько файлов, нужно сохранять последующие книги с присвоением очередного имени например книга1, книга2,...,книга21802,книга21803 и т.д. старые нельзя удалять или затирать, они должны сохраниться. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 18.10.06 11:04 |
Если книге нужно присваивать имя с очередным номером (с увеличением на единицу от максимального номера среди существующих в данной директории), то можно сделать так:
Sub новая_книга()
Dim cDir As String, fNext As Long Dim myWb As Workbook, fPref As String fPref = "Книга" 'префикс каждой новой книги ' (префикс можно задать другой, тогда файлы не будут "безликими", ' например, можно задать префикс, как "ВыпискаЛС" и будет понятно, что в файлах с ' таким именем находятся именно Выписки Лицевых Счетов) cDir = "C:\temp" '"C:\Новая папка" ChDir cDir With Application.FileSearch .LookIn = cDir .Filename = fPref & "*.xls" If .Execute(msoSortByFileName, msoSortOrderDescending) > 0 Then fNext = CStr(CLng(Replace(Replace(.FoundFiles(1), cDir & "\" & fPref, "" ![]() ![]() Else fNext = "1" End If End With Set myWb = Workbooks.Add myWb.SaveAs cDir & "\" & fPref & fNext & ".xls" MsgBox "Сохранен очередной по порядку файл:" & vbCrLf & myWb.FullName myWb.Close End Sub |
Страница: 1 |
|