Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Открытие ранее созданных шаблонов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Открытие ранее созданных шаблонов
Espada Дата: Пятница, 04.10.2013, 12:12 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Всем привет. Ребят может подскажете идейку что можно сделать. В общем ситуация такая: Есть лист со списком паспортов, на листе сделано 5 кнопок, одна из них печать паспорта, при нажатии печать открывается созданный ранее шаблон(шаблон для каждого вида паспорта свой), в него выгружаются данные из таблицы, и он сразу преобразуется в пдф(чтобы нельзя было редактировать). Далее Пдф сохраняется в отдельную папку, где хранятся все ПДФки.Если нужно просмотреть ранее созданный паспорт, работники его выбирают в списке паспортов нажимают печать и смотрят ПДФку, так вот беда в чем: часто меняются Госты, и их меняю непосредственно в шаблоне, и получается так, что при открытии старого паспорта уже формируется файлик с новыми гостами, а нада что бы были те которые были при оформлении!Я даже не представляю что можно придумать, мб идейку подкинете?) Расписал как мог) может конечно и немного непонятно)
 
Ответить
СообщениеВсем привет. Ребят может подскажете идейку что можно сделать. В общем ситуация такая: Есть лист со списком паспортов, на листе сделано 5 кнопок, одна из них печать паспорта, при нажатии печать открывается созданный ранее шаблон(шаблон для каждого вида паспорта свой), в него выгружаются данные из таблицы, и он сразу преобразуется в пдф(чтобы нельзя было редактировать). Далее Пдф сохраняется в отдельную папку, где хранятся все ПДФки.Если нужно просмотреть ранее созданный паспорт, работники его выбирают в списке паспортов нажимают печать и смотрят ПДФку, так вот беда в чем: часто меняются Госты, и их меняю непосредственно в шаблоне, и получается так, что при открытии старого паспорта уже формируется файлик с новыми гостами, а нада что бы были те которые были при оформлении!Я даже не представляю что можно придумать, мб идейку подкинете?) Расписал как мог) может конечно и немного непонятно)

Автор - Espada
Дата добавления - 04.10.2013 в 12:12
Poltava Дата: Пятница, 04.10.2013, 12:26 | Сообщение № 2
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

А можно глупый вопрос? Зачем вам заново создавать ПДФ почему не открывать уже созданный ранее файл ???
 
Ответить
СообщениеА можно глупый вопрос? Зачем вам заново создавать ПДФ почему не открывать уже созданный ранее файл ???

Автор - Poltava
Дата добавления - 04.10.2013 в 12:26
Hugo Дата: Пятница, 04.10.2013, 12:55 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
Можно придумать так - проверяете наличие файла - если такой есть, то не формируете новый, а открываете уже созданный.
Ну а если нужно перезаписать - где-то ставите незаметную кнопку "обновить pdf" с кучей проверок-подтверждений по дороге к результату.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожно придумать так - проверяете наличие файла - если такой есть, то не формируете новый, а открываете уже созданный.
Ну а если нужно перезаписать - где-то ставите незаметную кнопку "обновить pdf" с кучей проверок-подтверждений по дороге к результату.

Автор - Hugo
Дата добавления - 04.10.2013 в 12:55
Espada Дата: Пятница, 04.10.2013, 14:56 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

А можно глупый вопрос? Зачем вам заново создавать ПДФ почему не открывать уже созданный ранее файл ???

Можно придумать так - проверяете наличие файла - если такой есть, то не формируете новый, а открываете уже созданный.
Ну а если нужно перезаписать - где-то ставите незаметную кнопку "обновить pdf" с кучей проверок-подтверждений по дороге к результату.

Вариант конечно такой обдумывал, но у нас за небольшое количество времени уже 8тысяч записей, т.е необходимо минимум 8тыс ПДФак, а это будет ещё расти и расти. Вариант рабочий но, я его оставлял на крайний случай
 
Ответить
Сообщение
А можно глупый вопрос? Зачем вам заново создавать ПДФ почему не открывать уже созданный ранее файл ???

Можно придумать так - проверяете наличие файла - если такой есть, то не формируете новый, а открываете уже созданный.
Ну а если нужно перезаписать - где-то ставите незаметную кнопку "обновить pdf" с кучей проверок-подтверждений по дороге к результату.

Вариант конечно такой обдумывал, но у нас за небольшое количество времени уже 8тысяч записей, т.е необходимо минимум 8тыс ПДФак, а это будет ещё расти и расти. Вариант рабочий но, я его оставлял на крайний случай

Автор - Espada
Дата добавления - 04.10.2013 в 14:56
_Boroda_ Дата: Пятница, 04.10.2013, 15:00 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16742
Репутация: 6534 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Дело в том, что проверять-то не нужно. Нужно просто запустить команду "Открыть файл вввв.пдф".
Если откроет, значит, такой файл есть и все нормально, а если макрос даст ошибку, то такого файла нет и, следовательно, его нужно создать.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДело в том, что проверять-то не нужно. Нужно просто запустить команду "Открыть файл вввв.пдф".
Если откроет, значит, такой файл есть и все нормально, а если макрос даст ошибку, то такого файла нет и, следовательно, его нужно создать.

Автор - _Boroda_
Дата добавления - 04.10.2013 в 15:00
Espada Дата: Пятница, 04.10.2013, 15:07 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Дело в том, что проверять-то не нужно. Нужно просто запустить команду "Открыть файл вввв.пдф".
Если откроет, значит, такой файл есть и все нормально, а если макрос даст ошибку, то такого файла нет и, следовательно, его нужно создать.

Это не подойдёт, ладно если бы мне или коллегам это нада было, то ясно что раз ошибка значит новый создаём, а так этим журналом пользуются Люди не очень хорошо разбираются в компе, и показали что тыкать и всё, а если не дай бог ошибка сразу звонки нам.

Всё таки обсудили и решили выделить на сервере место и сделать каталог из файлов пдф. можно-ли при нажатии на печать сделать проверку на существование файла, и если он есть сразу открыть его, а если нет, то создать новый?
 
Ответить
Сообщение
Дело в том, что проверять-то не нужно. Нужно просто запустить команду "Открыть файл вввв.пдф".
Если откроет, значит, такой файл есть и все нормально, а если макрос даст ошибку, то такого файла нет и, следовательно, его нужно создать.

Это не подойдёт, ладно если бы мне или коллегам это нада было, то ясно что раз ошибка значит новый создаём, а так этим журналом пользуются Люди не очень хорошо разбираются в компе, и показали что тыкать и всё, а если не дай бог ошибка сразу звонки нам.

Всё таки обсудили и решили выделить на сервере место и сделать каталог из файлов пдф. можно-ли при нажатии на печать сделать проверку на существование файла, и если он есть сразу открыть его, а если нет, то создать новый?

Автор - Espada
Дата добавления - 04.10.2013 в 15:07
Poltava Дата: Пятница, 04.10.2013, 15:53 | Сообщение № 7
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

В модуль книги
[vba]
Код
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
      Err.Clear: On Error Resume Next
      myShell.Run "C:\123.pdf"
      If Err.Number = 0 Then
          Cancel = True
          Exit Sub
      End If
      'Дале ваш макрос по созданию новой ПДФ
End Sub
[/vba]
Вместо "C:\123.pdf" прописываете переменную в которой храниться имя нужного файла


Сообщение отредактировал Poltava - Пятница, 04.10.2013, 16:00
 
Ответить
СообщениеВ модуль книги
[vba]
Код
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
      Err.Clear: On Error Resume Next
      myShell.Run "C:\123.pdf"
      If Err.Number = 0 Then
          Cancel = True
          Exit Sub
      End If
      'Дале ваш макрос по созданию новой ПДФ
End Sub
[/vba]
Вместо "C:\123.pdf" прописываете переменную в которой храниться имя нужного файла

Автор - Poltava
Дата добавления - 04.10.2013 в 15:53
Espada Дата: Пятница, 04.10.2013, 16:44 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Не хочет чего-то у меня работать(
Вот как получилось:
[vba]
Код

Option Explicit
Public R As Integer
Public C As Integer

'печать паспорта
Sub Кнопка2_Щелчок()
'ПЕЧАТЬ ПАСПОРТА ВЫБРАННОЙ ПАРТИИ
'открыть файл паспорта соответствуюшего ЛКМ
Dim vПутьКПапке As String
Dim Name_File As String
Dim Name As String
Dim part As Variant
Dim pasp As Variant
Dim Mass As Variant
Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
Dim dataName$
Dim prName$

' определяем координаты активной ячейки журнала
R = ActiveCell.Row
C = ActiveCell.Column
' DataName и prName переменные имени пдф
dataName = Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(1).Cells(R, 1).Value
prName = Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(1).Cells(R, 4).Value

'MsgBox "R= " & R & " " & "C= " & C
' поместим значения координат акт. ячейки на лист "settings"
Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(4).Cells(1, 1).Value = R
Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(4).Cells(2, 1).Value = C
If R = 1 Or R = 2 Then
MsgBox "Установите курсор в строку с данными партии, паспорт которой Вы хотите печатать."
Exit Sub
End If
Err.Clear
On Error Resume Next
myShell.Run "Z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\BazaPDF\" & dataName + " " + prName & ".pdf"
   If Err.Number = 0 Then
   Exit Sub
   End If

' присвоим переменной Name_File значение имени файла паспорта
Name = Sheets(1).Cells(R, 4).Value
pasp = Sheets(1).Cells(R, 2).Value
part = Sheets(1).Cells(R, 3).Value
Mass = Sheets(1).Cells(R, 7).Value
Name_File = "ПК_" & Sheets(1).Cells(R, 4).Value
Dim nVar As Integer
nVar = MsgBox("Вы уверены, что Вам нужен парпорт № " & pasp & " партии № " & part & " на " & Name & " ?", 65, "Последнее китайское предупреждение")
' если нажата кнопка ОК, то открываем файл по заданному пути и имени. Иначе ничего.
If nVar = 1 Then
       vПутьКПапке = "z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\ПАСПОРТА2\"
       Workbooks.Open vПутьКПапке & "\" & Name_File & ".xlsm"
End If
End Sub
[/vba]
[moder]Зачем цитировать пост целиком? Можно отвечать и без цитирования[/moder]
 
Ответить
СообщениеНе хочет чего-то у меня работать(
Вот как получилось:
[vba]
Код

Option Explicit
Public R As Integer
Public C As Integer

'печать паспорта
Sub Кнопка2_Щелчок()
'ПЕЧАТЬ ПАСПОРТА ВЫБРАННОЙ ПАРТИИ
'открыть файл паспорта соответствуюшего ЛКМ
Dim vПутьКПапке As String
Dim Name_File As String
Dim Name As String
Dim part As Variant
Dim pasp As Variant
Dim Mass As Variant
Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
Dim dataName$
Dim prName$

' определяем координаты активной ячейки журнала
R = ActiveCell.Row
C = ActiveCell.Column
' DataName и prName переменные имени пдф
dataName = Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(1).Cells(R, 1).Value
prName = Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(1).Cells(R, 4).Value

'MsgBox "R= " & R & " " & "C= " & C
' поместим значения координат акт. ячейки на лист "settings"
Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(4).Cells(1, 1).Value = R
Workbooks("Журнал контроля техпроцесса(ВОДНЫЕ).xlsm").Sheets(4).Cells(2, 1).Value = C
If R = 1 Or R = 2 Then
MsgBox "Установите курсор в строку с данными партии, паспорт которой Вы хотите печатать."
Exit Sub
End If
Err.Clear
On Error Resume Next
myShell.Run "Z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\BazaPDF\" & dataName + " " + prName & ".pdf"
   If Err.Number = 0 Then
   Exit Sub
   End If

' присвоим переменной Name_File значение имени файла паспорта
Name = Sheets(1).Cells(R, 4).Value
pasp = Sheets(1).Cells(R, 2).Value
part = Sheets(1).Cells(R, 3).Value
Mass = Sheets(1).Cells(R, 7).Value
Name_File = "ПК_" & Sheets(1).Cells(R, 4).Value
Dim nVar As Integer
nVar = MsgBox("Вы уверены, что Вам нужен парпорт № " & pasp & " партии № " & part & " на " & Name & " ?", 65, "Последнее китайское предупреждение")
' если нажата кнопка ОК, то открываем файл по заданному пути и имени. Иначе ничего.
If nVar = 1 Then
       vПутьКПапке = "z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\ПАСПОРТА2\"
       Workbooks.Open vПутьКПапке & "\" & Name_File & ".xlsm"
End If
End Sub
[/vba]
[moder]Зачем цитировать пост целиком? Можно отвечать и без цитирования[/moder]

Автор - Espada
Дата добавления - 04.10.2013 в 16:44
Poltava Дата: Пятница, 04.10.2013, 17:59 | Сообщение № 9
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

А Вы собственно пытались понять логику макроса???[vba]
Код
myShell.Run ..........
[/vba]Этот код пытается открыть файл, и если файл открыт то прекращает работу макроса, а дальше уже должен идти код который должен выполнять действия при отсутствии файла то есть формировать новый пдф паспорт. У вас же после попытки открыть пдф идет вопрос о том действительно ли Вы хотите открыть паспорт и попытка открыть хlmx файл. Вы бы попробовали понять логику и тогда вопросы у вас исчезнут.
PS: После отключения обработчика ошибок On Error Resume Next следует обратно его включить On Error Goto 0 после того как вы перехватили нужную ошибку


Сообщение отредактировал Poltava - Пятница, 04.10.2013, 18:05
 
Ответить
СообщениеА Вы собственно пытались понять логику макроса???[vba]
Код
myShell.Run ..........
[/vba]Этот код пытается открыть файл, и если файл открыт то прекращает работу макроса, а дальше уже должен идти код который должен выполнять действия при отсутствии файла то есть формировать новый пдф паспорт. У вас же после попытки открыть пдф идет вопрос о том действительно ли Вы хотите открыть паспорт и попытка открыть хlmx файл. Вы бы попробовали понять логику и тогда вопросы у вас исчезнут.
PS: После отключения обработчика ошибок On Error Resume Next следует обратно его включить On Error Goto 0 после того как вы перехватили нужную ошибку

Автор - Poltava
Дата добавления - 04.10.2013 в 17:59
Espada Дата: Понедельник, 07.10.2013, 13:03 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

А Вы собственно пытались понять логику макроса???


Да я представляю, как он должен работать. При нажатии кнопки печать идёт проверка на существование ПДФ документа, с необходимым именем, если документ есть, то открывается ранее созданная ПДФка, а если нет то, открывается новый екселевский шаблон и в него вносятся данные.
В старом макросе понятно, что при нажатии ок откроется файл по заданному пути и имени[vba]
Код
If nVar = 1 Then
      vПутьКПапке = "z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\ПАСПОРТА2\"
      'vПутьКПапке = "C:\downloads\1\ВОДНЫЕ\ПАСПОРТА готовые (водные)"
     'vПутьКПапке = "G:\ОТК\ВОДНЫЕ\ПАСПОРТА готовые (водные)"
      Workbooks.Open vПутьКПапке & "\" & Name_File & ".xlsm"
End If
[/vba]

а пристроить к нему то, что нужно [vba]
Код


Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
     Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
     Err.Clear: On Error Resume Next
     myShell.Run "C:\123.pdf"
     If Err.Number = 0 Then
         Cancel = True
         Exit Sub
     End If
     'Дале ваш макрос по созданию новой ПДФ
End Sub
[/vba]
я нз как(
 
Ответить
Сообщение
А Вы собственно пытались понять логику макроса???


Да я представляю, как он должен работать. При нажатии кнопки печать идёт проверка на существование ПДФ документа, с необходимым именем, если документ есть, то открывается ранее созданная ПДФка, а если нет то, открывается новый екселевский шаблон и в него вносятся данные.
В старом макросе понятно, что при нажатии ок откроется файл по заданному пути и имени[vba]
Код
If nVar = 1 Then
      vПутьКПапке = "z:\IT-отдел\alexei\ОТК\ВОДНЫЕ\ПАСПОРТА2\"
      'vПутьКПапке = "C:\downloads\1\ВОДНЫЕ\ПАСПОРТА готовые (водные)"
     'vПутьКПапке = "G:\ОТК\ВОДНЫЕ\ПАСПОРТА готовые (водные)"
      Workbooks.Open vПутьКПапке & "\" & Name_File & ".xlsm"
End If
[/vba]

а пристроить к нему то, что нужно [vba]
Код


Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
     Dim myShell As Object: Set myShell = CreateObject("WScript.Shell")
     Err.Clear: On Error Resume Next
     myShell.Run "C:\123.pdf"
     If Err.Number = 0 Then
         Cancel = True
         Exit Sub
     End If
     'Дале ваш макрос по созданию новой ПДФ
End Sub
[/vba]
я нз как(

Автор - Espada
Дата добавления - 07.10.2013 в 13:03
Poltava Дата: Понедельник, 07.10.2013, 20:43 | Сообщение № 11
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Ну как то так


Сообщение отредактировал Poltava - Понедельник, 07.10.2013, 20:44
 
Ответить
СообщениеНу как то так

Автор - Poltava
Дата добавления - 07.10.2013 в 20:43
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!