Страницы: 1
RSS
Как сохранить файл с названием из ячейки
 
Добрый день, подскажите пожалуйста:
Есть макрос по обработке данных. Как сделать так, чтобы в конце обработки макрос сохранял в текущей папке файл с текстом из ячейки A1 в формате .xls (книга excel 97-2003)
То есть считывал ячейку A1 (например там написано Иван), и сохранял в той же папке файл как Иван.xls (формата "книга excel 97-2003", а не "5.0/95")
Заранее благодарю за помощь!
 
Эм...у меня например вот так, стащил с разных мест, пользуйтесь:
Код
SAVE()
  
       Dim SaveName As String
       Dim Directory As String
       
       Directory = "Z:\КакойТоПуть\" & Worksheets("Вводные").Range("O2").Text
        
    'CreateFolderWithSubfolders "Z:\КакойТоПусть\" & Directory
    If Dir(Directory, vbDirectory) = "" Then MkDir (Directory)
    ChDir Directory

       ' MyFile = ActiveWorkbook.Name
       ' Do not display the message about overwriting the existing file.
       Application.DisplayAlerts = False
       SaveName = Worksheets("КакойТоЛист").Range("КакаяТоЯчейка").Text
       ActiveWorkbook.SaveAs Filename:=Directory & "\" & SaveName & ".xlsm"
       
       MsgBox "Файл сохранен в папке:" & vbNewLine & Worksheets("КакойТоЛист").Range("КакаяТоЯчейка").Text & vbNewLine & vbNewLine & "Имя файла:" & vbNewLine & SaveName
   
End Sub
Изменено: lostandleft - 16.03.2020 17:54:42
 
Цитата
dmitryrabota написал:
и сохранял в той же папке
в той же где и кто? По сути нет понятия текущей папки в Excel. Есть путь к текущему файлу или путь к файлу с кодом. Плюс ячейка А1 может быть на разных листах. Вам из какого брать? Из активного или из конкретного листа с книги кодом? Или книга с кодом и есть активная и лист в ней тоже активный надо брать?
Если где файл с макросом и активный лист - то, наверное, так:
Код
Thisworkbook.SaveAs ThisWorkbook.Path & "\" & Range("A1").Value & ".xls", 56
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Так директория то всегда разная. у меня желание чтобы макрос сохранял в ту папку, в которой он начал изначально этот файл обрабатывал, а папки могут быть в разных местах
Например:
сохранить файл "Обработка1.xls" из папки C:\Папка для примера1\ с текстом из ячейки А1 (например "Иван") в C:\Папка для примера1\Иван.xls
или
сохранить файл "Обработка2.xls" из папки D:\Папка для примера2\ с текстом из ячейки А1 (например "Петр") в D:\Папка для примера2\Петр.xls

Да и лист у меня всегда один, его выбирать не нужно...
Изменено: dmitryrabota - 16.03.2020 17:57:24
 
dmitryrabota,
Код
ActiveWorkbook.Path
 
Цитата
dmitryrabota написал:
макрос сохранял в ту папку, в которой он начал изначально этот файл обрабатывал
см. мой коммент выше: нет понятия такого в макросах. Они могут что-то в изначальной папке обрабатывать, если Вы показали им на эту папку. А т.к. Вы этого не делали - то надо хотя бы прояснить: за основу брать активную книгу или книгу с кодом?
Цитата
dmitryrabota написал:
и лист у меня всегда один, его выбирать не нужно.
ну да. У Вас всегда один. Он единственный в книге? Или один, из которого информацию брать надо? Вы как-то процесс опишите более детально иначе решение получите, но работать будет не совсем как задумали.
Ну и для примера код выше я уже привел. Осталось "скользкие" моменты утрясти :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Точно "Иван"? Не может вдруг быть что-то типа "Иван/Пётр/Николай"?
 
При всех попытках сохранение происходит в папку
C:\Users\User\AppData\Roaming\Microsoft\Excel\XLSTART
Видимо, путь этот выбирается потому что там лежит личная книга макросов?
А как сделать так, чтобы  файл был сохранен в каталоге, где и исходный файл (т.е. сохранение рядом с исходником)?
Использую такой код:
Цитата
Dim CellValue As String
  Dim Path As String
  Dim FinalFileName As String
  Path = ThisWorkbook.Path & "\"
  CellValue = Range("A1")
  FinalFileName = Path & CellValue
  ActiveWorkbook.SaveAs Filename:=FinalFileName, _
Изменено: dmitryrabota - 16.03.2020 23:39:51
 
Цитата
Hugo написал:
Точно "Иван"? Не может вдруг быть что-то типа "Иван/Пётр/Николай"?
Нет, только русские буквы, без спецсимволов
 
Вместо ThisWorkbook.Path пишите путь к нужной книге, можете указать явно текстом.
 
Цитата
Hugo написал:
Вместо ThisWorkbook.Path пишите путь к нужной книге, можете указать явно текстом.
Так в этом то и загвоздка, что исходный файл всегда в разных папках! У меня на компьютере есть папка "заявки", в ней создается папка формата даты (16-03-20 например) и туда 1с сохраняет эксель таблицу. Далее эта таблица редактируется и сохраняется в этой же папке под другим именем (в идеале как я изначально писал имя присваивается из ячейки A1). В другой день это будет папка 17-03-20 и так далее, вот в чем проблема. Неужели в экселе нет данных места открытого файла? Неужели эксель не видит путь к файлу, который в данный момент открыт?
Соответственно, вопрос остается открытым: как сделать так, чтобы  файл был сохранен в каталоге, где и исходный файл (т.е. сохранение рядом с исходником)?
Изменено: dmitryrabota - 16.03.2020 23:53:03
 
Цитата
dmitryrabota написал:
где и исходный файл
так написали уже пару раз:  
Код
Path = ActiveWorkbook.Path
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
за основу брать активную книгу или книгу с кодом?
Активную книгу
Цитата
Дмитрий(The_Prist) Щербаков написал:
Он единственный в книге?
Да единственный
Цитата
Дмитрий(The_Prist) Щербаков написал:
Ну и для примера код выше я уже привел.
Спасибо, но, увы, он так же сохраняет в книгу с кодом (C:\Users\User\AppData\Roaming\Microsoft\Excel\XLSTART) вместо папки с активной (открытой) книгой.
 
Цитата
buchlotnik написал:
так написали уже пару раз:  
Код ? 1Path = ActiveWorkbook.Path
Спасибо, помогло! Я невнимателен.
Страницы: 1
Наверх