Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2011, 18:13   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию сохранение файла под именем, состоящим из содержимого двух ячеек

Макрос сохраняет файл, при этом в качестве имени берет содержимое ячейки S14. Вот фрагмент:

FName = o.Range("S14")

Как сделать так, чтобы к содержимому S14 добавлялось через дробь или тире содержимое ячейки A15?

Туплю......
strannick вне форума Ответить с цитированием
Старый 24.12.2011, 18:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
FName = o.Range("S14") & "\" & o.Range("A15")
EducatedFool вне форума Ответить с цитированием
Старый 24.12.2011, 18:49   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Сложил. Вот весь кусок кода:

Dim FName As String, o As Worksheet
Const FPath = "C:\Basis\Basis EUR\Zahlungserinnerung\"
Set o = Sheets("Zahlungserinnerung")
If Not o Is Nothing Then
FName = o.Range("S14") & "\" & o.Range("A15")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FPath & FName, _
Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

If Err.Number = 1004 Then MsgBox
Application.DisplayAlerts = False
Range("A23:V23").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Zahlungserinnerung").Copy
ActiveWorkbook.SaveAs Filename:=FPath & FName
ActiveWorkbook.Close False
Application.DisplayAlerts = True
End If

Подсвечивает желтым параметры сохранения и выдает ошибку "1004"
strannick вне форума Ответить с цитированием
Старый 24.12.2011, 19:12   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

откуда ж нам знать, что у вас находится в ячейках o.Range("S14") и o.Range("A15")...
Наверняка, формируемое имя некорректно.

Какая версия Excel?

Попробуйте написать в коде так:
Код:
FName ="1.pdf"
и проверьте, будет ли создаваться файл с этим именем.

Подпапка o.Range("S14") уже существует в папке FPath на момент запуска макроса?
Может, вы пытаетесь поместить файл в несуществующую папку?

PS: Зачем выбирать такой вырвиглазный цвет для выделения текста?
Вы сами-то видите на экране выделенный код?
EducatedFool вне форума Ответить с цитированием
Старый 24.12.2011, 19:26   #5
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Извиняюсь за цвет. Исходный код был такой:

Dim FName As String, o As Worksheet
Const FPath = "C:\Basis\Basis EUR\Zahlungserinnerung\"
Set o = Sheets("Zahlungserinnerung")
If Not o Is Nothing Then
FName = o.Range("S14")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FPath & FName, _
Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
If Err.Number = 1004 Then MsgBox "Canceled"
Application.DisplayAlerts = False
Range("A23:V23").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Zahlungserinnerung").Copy
ActiveWorkbook.SaveAs Filename:=FPath & FName
ActiveWorkbook.Close False
Application.DisplayAlerts = True
End If

Это когда имя файла бралось по значению ячейки S14. Значение ячейки поставляется из другого листа. Все работало. Все пути прописаны правильно, каталоги на месте. Апробировано неоднократно. Версия 2007.

Но вот, когда вместо
FName = o.Range("S14")
вставил
FName = o.Range("S14") & "\" & o.Range("A15")
выдало ошибку.
strannick вне форума Ответить с цитированием
Старый 25.12.2011, 04:01   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Ошибка возникла из-за "/". Не воспринимает в имени файла этот символ. Заменил на тире. Все заработало.
strannick вне форума Ответить с цитированием
Старый 25.12.2011, 13:28   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну конечно - в имени файла слэш быть не может, у Вас имя файла - o.Range("A15"), а o.Range("S14") & "\" - это каталог выше.
Его сперва нужно создать, затем уже сохранять файл по пути (упростил)

C:\Basis\Basis EUR\Zahlungserinnerung\o.Range("S14 ")\o.Range("A15")
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование диапазона по условиям состоящим в свою очередь из двух и более признаков alexsampler Microsoft Office Excel 5 23.08.2011 01:52
Сохранение файлов с именем с нумерацией 001,002,... artemavd Общие вопросы Delphi 5 26.04.2011 11:41
Сохранение рабочей книги с именем, представляющим собой текущую дату YJYNGK Microsoft Office Excel 2 30.10.2010 21:12
поиск и сохранение под другим именем fitc Общие вопросы Delphi 3 17.07.2009 18:50