1

Тема: Нужна помощь в автоматизации изменения номера накладной

Добрый день. Я работаю в сервисном центре и сталкнулся с такой проблемой: создал накладную о приеме и выдачи оборудования но незнаю как автоматизоровать чтобы при каждой распечатке на принтере менялся номер накладной 1, 2, 3 и тд.

2

Re: Нужна помощь в автоматизации изменения номера накладной

Что ж, сделать можно. Не совсем понятно, что вы имеете ввиду под словами "создал накладную". Это шаблон или документ, который вы меняете по мере надобности?
Значит так. Нужно поместить в самом конце документа, на отдельной строке такое поле:
{ Set OrderNum 1 }
Оно будет отвечать за номер при распечатке. В том месте, где номер должен отображаться, нужно вставить ссылку на эту закладку:
{ REF OrderNum }
В сам документ поместить следующий код:

Option Explicit

Sub ChangeNum()
  Dim f As Field
  Dim n As Long
  Dim s As String
  Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1)
  s = Trim(f.Code.Text)
  n = CLng(Mid(s, InStrRev(s, " ")))
  f.Code.Text = Space(1) & Replace(s, " " & n, " " & n + 1) & Space(1)
  ActiveDocument.Fields.Update
End Sub
'**********************************
'Перехват стандартных команд печати
'Печать по умолчанию
Sub FilePrintDefault()
  ChangeNum
  ActiveDocument.PrintOut
End Sub
'Стандартный диалог печати
Sub FilePrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'Новый диалог печати для Word 2010
Sub PrintPreviewAndPrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'**********************************

Основная процедура ChangeNum, в ней изменяется цифра в закладке и производится обновление полей. Остальное — это перехват печати

Лучше день потерять — потом за пять минут долететь!

3

Re: Нужна помощь в автоматизации изменения номера накладной

Накладная была создана в ворде.

4

Re: Нужна помощь в автоматизации изменения номера накладной

Понятно, что не в фотошопе. Это шаблон или документ?

Лучше день потерять — потом за пять минут долететь!

5

Re: Нужна помощь в автоматизации изменения номера накладной

документ

6

Re: Нужна помощь в автоматизации изменения номера накладной

Вот образец этого документа

Post's attachments

Договор накладная14567567.doc 43 Кб, 18 скачиваний с 2011-08-12 

You don't have the permssions to download the attachments of this post.

7

Re: Нужна помощь в автоматизации изменения номера накладной

Ну что ж, документ, так документ. Я же не знаю тонкостей вашего документооборота smile
Сделал так, как нужно. Номер накладной отображается с пятью знаками.
В архиве два документа. В один я просто добавил поля и макросы, сохранив исходное форматирование. В другом я немного исправил форматирование, грамматические и стилистические ошибки, почистил лишние абзацы и пробелы.

Post's attachments

Договоры-накладные.zip 28.27 Кб, 48 скачиваний с 2011-08-12 

You don't have the permssions to download the attachments of this post.
Лучше день потерять — потом за пять минут долететь!

8

Re: Нужна помощь в автоматизации изменения номера накладной

Большущее спасибо. Но я забыл еще один маленький нюанс можно ли зделать так чтобы при заполнении левой половинки накладной автоматом заполнялась правая. И если не очень сложно боъяснить как вы добились чтобы щетчик номера накладной работал и дублирование заполнений. Еще раз огромное спасибо.

9

Re: Нужна помощь в автоматизации изменения номера накладной

Еще есть один вопрос : если документ после печати не сохранять для того чтобы поля для заполнения оставались пустыми то номер накладной тоже не сохраняется ( или можно ли сделать чтобы каждый раз при открытии или закрытии и сохранения документа поля заполнения очищались или оставались чистыми). Заранее Спасибо.

10

Re: Нужна помощь в автоматизации изменения номера накладной

Для параллельного заполнения лучше всего форму делать в этом случае.
Как работает? Я же написал. Стоит поле { Set OrderNum 1 }, т.е. создаётся закладка с именем OrderNum и значением 1. В нужных местах ставится перекрёстная ссылка на эту закладку полем { REF OrderNum \# 00000 }.
Макросы перехватывают стандартные команды печати, изменяют цифру в поле, где задаётся закладка, обновляют поля, чтобы номер на перекрёстных ссылках тоже изменился и печатают документ или показывают диалог печати. Вот и всё.
Чтобы не мучаться с очисткой полей, нужно документ с пустыми полями сохранить как шаблон. Но макрос придётся переделать, чтобы сохранял номер накладной в шаблон.

Лучше день потерять — потом за пять минут долететь!

11

Re: Нужна помощь в автоматизации изменения номера накладной

Я сделал так как вы сказали сохранил как шаблон но при закрытии документа выскакивает табличка  "сохранить" нажимаю да и он сохраняет все экземпляры после каждого закрытия в мои документы. С этим можно чтото сделать чтобы не сохранял.
Заранее спасибо.

12

Re: Нужна помощь в автоматизации изменения номера накладной

Вы написали "Для параллельного заполнения лучше всего форму делать в этом случае." а можно чуть чуть подробнее что и куда делать ( если вам это не сложно). wink

13

Re: Нужна помощь в автоматизации изменения номера накладной

Я чуток переделал макрос "ChangeNum"

Теперь он сохраняет номера в реестре.
Можете документ сохранять или не сохранять.
Номер будет всегда увеличиваться на один

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

Кстати! А что, если Вам потребуется распечатать сразу несколько экземпляров с уникальными номерами?

И ещё! У меня Office 2010 и печать перехватывается только при нажатии Ctrl+P. А при печати через меню "Файл \ Печать" не перехватывается. Я что-то рылся в интернете, но так и не нашёл почему.

Post's attachments

Перехват печати.doc 67 Кб, 24 скачиваний с 2011-08-12 

You don't have the permssions to download the attachments of this post.

14

Re: Нужна помощь в автоматизации изменения номера накладной

100% непотребуется распечатать сразу несколько экземпляров с уникальными номерами так что по этому поводу можно не парится. Сейчас самый важный и последний момент это дублирование (паралельное заполнение) текста.
Спасибо.

15

Re: Нужна помощь в автоматизации изменения номера накладной

Я сделал такой же бланк в Excel (как ни как это табличный редактор, а не текстовый) и в этом есть ряд преимуществ.
Заполнять теперь можно только один бланк

Post's attachments

Накладная.xls 48.5 Кб, 39 скачиваний с 2011-08-12 

You don't have the permssions to download the attachments of this post.

16

Re: Нужна помощь в автоматизации изменения номера накладной

Спасибо.

17

Re: Нужна помощь в автоматизации изменения номера накладной

Настаев пишет:

Я чуток переделал макрос "ChangeNum"

Теперь он сохраняет номера в реестре.
Можете документ сохранять или не сохранять.
Номер будет всегда увеличиваться на один

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

Кстати! А что, если Вам потребуется распечатать сразу несколько экземпляров с уникальными номерами?

И ещё! У меня Office 2010 и печать перехватывается только при нажатии Ctrl+P. А при печати через меню "Файл \ Печать" не перехватывается. Я что-то рылся в интернете, но так и не нашёл почему.


Вы можете закомметировать одну строку

'прочитать последний номер из реестра (используется String, чтобы не обрабатывать ошибку в случае отсутствия записи в реестре)
    s = GetSetting("MyApp", "Накладная", "счётчик")

Не ну вроде всё понятно, сто реально одной строкой кода Вы рулите в реестре компьютера??

18

Re: Нужна помощь в автоматизации изменения номера накладной

сто реально одной = что реально одной

19

Re: Нужна помощь в автоматизации изменения номера накладной

Большое спасибо  всем кто принемал участие в моей проблеме, проблема решена на 99%. Чесно говоря я редко обращаюсь за помощью на форумы (в основном добиваюсь всего сам)  но бывают пробелы. Вот этот документ  но дублж идет через кнопку F9. Но это мелочи. В сервисном центре я работаю инженером по ремонту компьютерной техники если кому понадобится консультация (помощь) можете звонить по номеру в накладной или на мыло vip-3d@ukr.net. wink
ЕЩЕ РАЗ ВСЕМ ОГРОМНОЕ СПАСИБО

Post's attachments

Договор накладная 2 (исправленная).dotm 31.36 Кб, 29 скачиваний с 2011-08-14 

You don't have the permssions to download the attachments of this post.

20

Re: Нужна помощь в автоматизации изменения номера накладной

Перед печатью все поля обновятся автоматически, нет необходимости нажимать F9. Я сам хотел посоветовать использовать поля ввода, но не решился  smile

Лучше день потерять — потом за пять минут долететь!

21

Re: Нужна помощь в автоматизации изменения номера накладной

У меня похожая проблема. Есть документ ворд напечатаны талоны на мойку их 10 штук на листе,  нужно чтобы при распечатывании каждому талону присваивался уникальный очередной номер. как это сделать?

22

Re: Нужна помощь в автоматизации изменения номера накладной

А как файл прикрепить. У меня не получается.

23

Re: Нужна помощь в автоматизации изменения номера накладной

maix-i пишет:

А как файл прикрепить. У меня не получается.

через обзор выбираете файл, потом жмете Загрузить и если файл не превышает макс допустимый размер то он загрузится

24

Re: Нужна помощь в автоматизации изменения номера накладной

Я бы делал это слиянием с использованием поля MERGENEXT

Лучше день потерять — потом за пять минут долететь!

25

Re: Нужна помощь в автоматизации изменения номера накладной

А вот! Понятно. Вот и док

Post's attachments

МОЙКА НАРУЖ.doc 37.5 Кб, 7 скачиваний с 2012-12-27 

You don't have the permssions to download the attachments of this post.

26

Re: Нужна помощь в автоматизации изменения номера накладной

viter.alex пишет:

Я бы делал это слиянием с использованием поля MERGENEXT

Извините, но я, похоже, далек от этого; не могли бы вы объяснить мне, что да как, если это возможно.

27

Re: Нужна помощь в автоматизации изменения номера накладной

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

28

Re: Нужна помощь в автоматизации изменения номера накладной

viter.alex пишет:

Что ж, сделать можно. Не совсем понятно, что вы имеете ввиду под словами "создал накладную". Это шаблон или документ, который вы меняете по мере надобности?
Значит так. Нужно поместить в самом конце документа, на отдельной строке такое поле:
{ Set OrderNum 1 }
Оно будет отвечать за номер при распечатке. В том месте, где номер должен отображаться, нужно вставить ссылку на эту закладку:
{ REF OrderNum }
В сам документ поместить следующий код:

Option Explicit

Sub ChangeNum()
  Dim f As Field
  Dim n As Long
  Dim s As String
  Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1)
  s = Trim(f.Code.Text)
  n = CLng(Mid(s, InStrRev(s, " ")))
  f.Code.Text = Space(1) & Replace(s, " " & n, " " & n + 1) & Space(1)
  ActiveDocument.Fields.Update
End Sub
'**********************************
'Перехват стандартных команд печати
'Печать по умолчанию
Sub FilePrintDefault()
  ChangeNum
  ActiveDocument.PrintOut
End Sub
'Стандартный диалог печати
Sub FilePrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'Новый диалог печати для Word 2010
Sub PrintPreviewAndPrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'**********************************

Основная процедура ChangeNum, в ней изменяется цифра в закладке и производится обновление полей. Остальное — это перехват печати

Как вставить я не могу разобраться, как поля сделать?

29

Re: Нужна помощь в автоматизации изменения номера накладной

Начинаю понимать. Только как в сам документ вставить код?

30

Re: Нужна помощь в автоматизации изменения номера накладной

Вставил вроде но выдает ошибку"RUN-Time error 5941" вот строчка в которой ошибка
Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1)

31

Re: Нужна помощь в автоматизации изменения номера накладной

Так что мне никто не поможет???

32

Re: Нужна помощь в автоматизации изменения номера накладной

В сам документ поместить следующий код:

Sub ChangeNum()
  Dim f As Field
  Dim n As Long
  Dim s As String
  Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1)
  s = Trim(f.Code.Text)
  n = CLng(Mid(s, InStrRev(s, " ")))
  f.Code.Text = Space(1) & Replace(s, " " & n, " " & n + 1) & Space(1)
  ActiveDocument.Fields.Update
End Sub
'**********************************
'Перехват стандартных команд печати
'Печать по умолчанию
Sub FilePrintDefault()
  ChangeNum
  ActiveDocument.PrintOut
End Sub
'Стандартный диалог печати
Sub FilePrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'Новый диалог печати для Word 2010
Sub PrintPreviewAndPrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub

Опишите, что означает каждая строчка кода.

33

Re: Нужна помощь в автоматизации изменения номера накладной

Sub ChangeNum()
  Dim f As Field
  Dim n As Long
  Dim s As String
  'Поле из закладки OrderNum
  Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1)
  'Удаление обрамляющих пробелов из текста кода поля f
  s = Trim(f.Code.Text)
  'Изъятие номера накладной из текста кода поля f и преобразование этого текста в число
  n = CLng(Mid(s, InStrRev(s, " ")))
  'Запись нового текста в код поля с инкрементом номера накладной
  f.Code.Text = Space(1) & Replace(s, " " & n, " " & n + 1) & Space(1)
  'Обновление полей в документе
  ActiveDocument.Fields.Update
End Sub
'**********************************
'Перехват стандартных команд печати
'Печать по умолчанию

'Все процедуры однотипны. При перехвате сначала вызывается процедура для изменения номера
'накладной, а затем соответствующее диалоговое окно печати
Sub FilePrintDefault()
  ChangeNum
  ActiveDocument.PrintOut
End Sub
'Стандартный диалог печати
Sub FilePrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
'Новый диалог печати для Word 2010
Sub PrintPreviewAndPrint()
  ChangeNum
  Dialogs(wdDialogFilePrint).Show
End Sub
Лучше день потерять — потом за пять минут долететь!

34

Re: Нужна помощь в автоматизации изменения номера накладной

Dim f As Field
  Dim n As Long
  Dim s As String
А это что понятно что этим буквам присваивается значение , что за значение.
'Поле из закладки OrderNum это где поставишь  OrderNum там и будет.

35

Re: Нужна помощь в автоматизации изменения номера накладной

Set f = ActiveDocument.Bookmarks("OrderNum").Range.Paragraphs.First.Range.Fields(1) почему у меня ошибка в этом поле Пишет "RUN-time error 5941  запрашиваемый номер семейства не существует"

36

Re: Нужна помощь в автоматизации изменения номера накладной

а где можно взять значения этих кодов?

37

Re: Нужна помощь в автоматизации изменения номера накладной

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

Лучше день потерять — потом за пять минут долететь!

38

Re: Нужна помощь в автоматизации изменения номера накладной

Вот документ.

Post's attachments

МОЙКА НАРУЖ (2).doc 52 Кб, 7 скачиваний с 2013-01-25 

You don't have the permssions to download the attachments of this post.

39

Re: Нужна помощь в автоматизации изменения номера накладной

посмотрите, помогите. что за поля и закладки?

40

Re: Нужна помощь в автоматизации изменения номера накладной

Может кто поможет???