Страницы: 1
RSS
Добавление значения ячейки к заданному имени файла
 
Приветствую жителей! Давно уже ползуюсь замечательным макросом, "Создание резервных копий ценных файлов". http://www.planetaexcel.ru/tip.php?aid=72  
 
Аппетиты растут, с познанием новых возможностей.  
Теперь очень нужно следующее: Некий макрос создаёт файл "Отчёт.xlsb" в конкретную папку.  
Очень нужно, чтобы после слова "Отчёт" (в имени файла) добавлялось значение ячейки (имеет имя) или указать адрес, и текущий месяц (Март 2010) который тоже находится в определённой ячейке.  
Другими словами, нужно добавить к заданному имени - значения двух разных ячеек.  
Пробовал переписать код "Резервного копирования". Не получилось.  
Видел похожие вопросы. Ответов не нашёл  
 
Всем спасибо!
 
Поиск - имя файла из ячейки. Сто раз обсуждалось.
 
Я понимаю Ваше раздражение. Не считайте, что я не приложил некоторые усиля, прежде чем обратится с вопросом. Несколько месяцев "рою" эту проблему.  
 
Лучше с кодом помогите, пожалуйста.  
   
ActiveWorkbook.SaveAs Filename:="C:\Оперативный анализ\Экспорт\" & "Отчёт " & [d1] & " " & [b1] & "." & "xlsb"
   FileFormat:=xlExcel12, CreateBackup:=False  
Выдаёт ошибку экспедиции.
 
Konstanta, ведь и в правду не однократно обсуждалось. Если Вы все это уже просмотрели и все равно не выходит каменный цветок - приложите файл с кодом. Вам его поправят быстрее чем на слух искать ошибку:)
 
Я правда уже в обсуждении http://www.planetaexcel.ru/tip.php?aid=72 ответил, могу повторить под новую задачу -  
 
       FileNameXls = strPath & "\" & Left(ActiveWorkbook.Name, _  
            Len(ActiveWorkbook.Name) - 4) & " " & strDate & " " _  
            & ActiveWorkbook.ActiveSheet.[a5] _
            & " " _  
            & ActiveWorkbook.ActiveSheet.[a6] _
            & ".xls"  
       ActiveWorkbook.SaveCopyAs Filename:=FileNameXls
 
Спасибо Hugo и все !  
Я начал со ссылки http://www.planetaexcel.ru/tip.php?aid=72    
Но правда не понятно мне. Вам хорошо рассуждать. Вы профи в этом.  
Но проявите снисходительность ... :)  
 
Я попробую последний код.  
Хотя уже приготовил файл. Не получится, выложу.  
Спасибо!
 
Не выходит. Не знаю почему...  
 
Уже писал, переписывал всю голову сломал...  
вот файлик: описание проблемы там.  
Код, предложенный уважаемым Hugo тоже пробовал.  
Да, поначалу сохранил. Потом вообще запутался. Он мне стал сохранять по другому пути но с именем False.xlsx  
В то время как мне нужно в конкретную папку с нужным именем.  
В общем файл прикрепил в первоначальном виде. Да файлик xlsm 2007 MS  
Спасибо!
 
Konstanta, не нашел Ваш макрос:(  
Что сразу заметно - у Вас в столбце В ДАТА с примененным форматом, а Вам надо строковое/ тестовое значение.  
Использование некоторых символов в имени файла, включая кавычки, -  ЗАПРЕЩЕНО.  
Может у Вас стоит пропуск ошибок On Error Resume Next? Отключите его и Ваш код вывалится в отладку.  
Что то и сам с удалением кавычек в ВБА запутался - решил по простецки через формулу RC1.  
Держите вариант.  
И обратите внимание в примере кода - крайний слеш формируется в строке макроса, поэтому при написании пути для сохранения крайняя ПАПКА не закрывается слешем.
 
Проблема в том, что в рабочем файле макросов много.    
(Кстати, есть возможность обозвать модули именами? А то я ищу каждый раз открывая поочерёдно каждый). Вот сохраняя файл для отправки, видимо удалил не тот макрос. Голова уже пухнет...  
 
Вот фрагмент кода, в котором проблема:  
Sub Выгрузить_отчёт()  
'  
   Sheets("Экспорт").Select  
   Sheets("Экспорт").Copy  
   ActiveWorkbook.SaveAs Filename:="C:\Оперативный анализ\Экспорт\Отчёт.xlsb", _ FileFormat:=xlExcel12, CreateBackup:=False  
   ActiveWindow.Close  
   End Sub  
Я пытался сюда вписать все присланные варианты. Получается полный хаос.
 
Ну а так:  
 
Sheets("Экспорт").Copy  
PartOfName = ActiveWorkbook.ActiveSheet.[a5] & " " & ActiveWorkbook.ActiveSheet.[a6]
ActiveWorkbook.SaveAs Filename:="C:\Оперативный анализ\Экспорт\Отчёт " & PartOfName & ".xlsb", FileFormat:=xlExcel12, CreateBackup:=False  
ActiveWindow.Close
 
Спасибо Hugo!  
Уже большой прогресс!  
Сделал имя.    
Одна загвоздка: в моём файле месяц представлен как Март 2010.  
Беда в том, что это дата в таком формате. То есть макрос берёт 31.03.2010.  
Естественно он в имя файла указывает дату.  
А (наверное) можно "сказать ему, чтобы он оставил значение как текст?
 
Konstanta, а Вы пример смотрели? Вам там и про формат даты писал, и формат фирмы:(  
 
Что там не так?
 
Симотрел пример ( в прикреплённом файле).  
Он как архив zip сохранился. Открыл, там как из "Опена" всё. Отдельные папочки, файлики.  
Поглядел, внутрь, ничего не понял.  
 
Рабочий код:    
PartOfName = ActiveWorkbook.ActiveSheet.[d1] & " " & ActiveWorkbook.ActiveSheet.[b1]
ActiveWorkbook.SaveAs Filename:="C:\Оперативный анализ\Экспорт\Отчёт " & PartOfName & ".xlsb", FileFormat:=xlExcel12, CreateBackup:=False  
   ActiveWindow.Close  
Он вместо желаемой "Март 2010", выдаёт 31.03.2010  
Куда вписать и что? Я пока затрудняюсь.
 
Я попытался в эту самую ячейку (откуда макрос берёт месяц) превратить в текстовое значение.  
Но там (заноза) формула у меня стоит. Она берёт дату из имени "Конец периода".  
Может можно при выгрузке в новый файл, это значение преобразовать в текст?  
Пытался через спец. вставку. Не выходит (точнее он выдаёт именно 31.03.2010).  
Хотя это был бы выход (и не плохой) я бы это значение потом ещё и фильтровал по названиям месяцев...
 
Привет-2_Igor67_post_111456_не_архив (им и не был). А почему бы сразу не сказать?.. Как вы со своими *.xlsm разбираетсь, чем "качаете"?  
Z.
 
в макросе  
 
ChDir "C:\TEMP"  
   ActiveWorkbook.SaveAs Filename:=Sheets("Sheet1").[A1], FileFormat:= _
       xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _  
       , CreateBackup:=False  
 
 
в ячейке  
="QAR 2B "&"Month "&VLOOKUP(C1,D1:E13,2,0)&" "&VLOOKUP(G1,H1:I54,2,0)&" (File Created "&TEXT(NOW(),"ddmmmyy hhmmss")&")"  
 
 
 
в ячейке (отображение)  
QAR 2B Month All All (File Created 25Mar10 163210)
[*]<a href="mailto:info@ledrex\";>
 
Сегодня получилось удалить кавычки и без формулы листа. Доработанная версия файла и код прилагаются:)  
Так, как автор использует 2007 - файл в этом формате.  
 
Option Explicit  
 
Sub Backup_Workbook()  
   Dim ishWB As Workbook  
   Dim newWB As Workbook  
   Dim x As String, strPath As String, FileNameXls As String    'переменные пути и имени файла  
   Dim strFirma As String, strDate As String  
   Dim iNum As Integer  
 
   Set ishWB = ThisWorkbook    'книга из которой запущен макрос  
   Set newWB = Workbooks.Add    'новая книга  
 
   ishWB.Sheets("Экспорт").Copy Before:=newWB.Sheets(1)    'копируем лист отчета в новую книгу  
 
   iNum = Val(Application.Version)    'проверка версии Ехс  
   'указываем путь (папку) для сохранения файла  
   strPath = "F:\DownLoad\тест"  
   'strPath = "C:\Оперативный анализ\Экспорт"  
   'если нужно сохранить в ту же папку что и исходный файл с макросом  
   'strPath = ishWB.Path 'определяем путь к папке из которой запущен файл  
 
   'обработка ошибки  
   On Error Resume Next  
   x = GetAttr(strPath) And 0  
   If Err = 0 Then    ' если путь существует - сохраняем копию книги  
       strDate = Format([c1], "mmmm yyyy") 'преобразуем дату в текст
       'сосчитываем имя фирмы из ячейки  
       strFirma = [d1].Text 'записали значение в переменную
       'удаляем кавычки - они запрещены в имени файла  
       strFirma = Trim(Replace(strFirma, """", ""))  
       strFirma = Replace(strFirma, Chr(171), "")  
       strFirma = Trim(Replace(strFirma, Chr(187), ""))  
 
       'формируем полный путь и имя файла для сохранения  
       FileNameXls = strPath & "\" & "Отчёт " & strFirma & " " & strDate & ".xlsb"  
       'сохраняем книгу  
       ActiveWorkbook.SaveAs Filename:=FileNameXls, FileFormat:= _  
                             xlExcel12, CreateBackup:=False  
   Else    'если путь не существует - выводим сообщение  
         
       MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical  
 
   End If  
     
End Sub
 
Всех приветствую!  
Наконец то получилось, с Вашей большой помощью, код такой:  
 
Sheets("Лист").Copy  
   strDate = Format([b1], "mmmm yyyy")
   PartOfName = ActiveWorkbook.ActiveSheet.[d1] & " " & strDate
ActiveWorkbook.SaveAs Filename:="C:\ПУТЬ" & PartOfName & ".xlsb", FileFormat:=xlExcel12, CreateBackup:=False  
   ActiveWindow.Close  
 
Спасибо за содействие!    
P/s  
Igor67 благодарю Вас! У меня уже работает код. Хотя в нём нет такой защиты от ошибок, как в Вашем.  
Я сохранил его. Покопаюсь обязательно. Попробую. Мне это нужно самому.  
 
Спасибо ёщё раз всем! Задача решена.
Страницы: 1
Читают тему
Наверх