Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
макрос. лист в файл
 
Доброго времени суток.
Существует задача сохранить лист в отдельный файл. Об этом уже много написано, я пытаюсь это воплотить, но почему то не получается. Вот собственно тот макрос:
Код
Sub СохранитьЛистВФайл()
    On Error Resume Next
     Const REPORTS_FOLDER = "Отчёты\"
     MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
      Filename = [i6] & [j6] & ".xlsx"
      arr = ActiveSheet.UsedRange.Value
       Err.Clear: ActiveSheet.Copy: DoEvents
   If Err Then Exit Sub   
   If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
   ActiveSheet.UsedRange.Value = arr
   ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
   ActiveWorkbook.Close False
   End If
End Sub

а если я не привязываю название файла к ячейкам - с выплыванием окошка для SaveAs, то все получается...подскажите где здесь ошибка и что нужно подправить...
Изменено: Izot23 - 24 Окт 2013 12:48:12
 
Что в ячейках? Дветочия небось...
 
а зачем вы копируете в массив, потом копируете лист, потом массив опять на лист?

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


а так непонятно, без примера
Живи и дай жить..
 
i6 - "Технологическая  карта  №"
j6 - "  /  - 2013 ТК"
 
Ну слэш то ведь нужно убирать - нет там такого каталога...
 
...поставил просто буквы - решилось. Подскажите, какой знак мешает???
 
точно...он заставляет искать такую папочку....спасибо и извиняюсь за отвлечения всех от важнейших дел по всякой ерунде;)
 
Цитата
а зачем вы копируете в массив, потом копируете лист, потом массив опять на лист?
чтобы копировалось без формул, а как значения
 
а можно рабочий вариант кода посмотреть ?
 
Дык код рабочий - почитайте внимательно тему :)
 
Hugo слэш убрать из "Отчёты\" ? или добавить MkDir ThisWorkbook.Path & "Отчёты\" & REPORTS_FOLDER
Изменено: kare - 24 Окт 2013 13:21:54
 
Нет, вся беда была в значениях тех двух ячеек - можно конечно добавить в код автоматическую замену всяких "левых" символов например на  "_" перед формированием пути для сохранения, а можно просто вручную недопускать таких данных в ячейках.
 
Hugo  а как сделать что бы брал значение с формы из текст бокс ?

Filename = [UserForm1.TextBox1.Value] & ".xlsx" ???
 
Вот например что уже было:

Код
==============================================================
 Замена запрещённых символов в имени файла или папки
Обработка файлов Примеры макросов на VBA для Excel  

При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы.

Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания:


Function Replace_symbols(ByVal txt As String) As String
    St$ = "~!@#$%^&*=|`'"""
    For i% = 1 To Len(St$)
        txt = Replace(txt, Mid(St$, i, 1), "_")
    Next
    Replace_symbols = txt
End Function

Пример использования:


' формируем путь к новому файлу
Путь = ThisWorkbook.Path & "\" & Replace_symbols(sh.Name) & _
"\" & Replace_symbols(cell) & "\" & Replace_symbols(cell.Next) & ".jpg" 
==============================================================
Тут бы конечно ещё и слэши нужно в список добавить.
 
я к тому, что запись
Код
with activesheet.usedrange
   .value=.value
end with


короче, чем чере массив
Живи и дай жить..
Страницы: 1
Читают тему (гостей: 1)
Наверх