Ответ: Если есть вопросы по скриптам
Добрый день!
Кто подскажет, что изменить в коде, чтобы название файла было вида "номер стриницы_название документа", а не наоборот как в скрипте? Спасибо
Set myInDesign = CreateObject("InDesign.Application.CS3")
If myInDesign.Documents.Count <> 0 Then
Set myDocument = myInDesign.ActiveDocument
myFileName = ""
myCancel = 0
Dim myArray()
ReDim myArray(myInDesign.PrinterPresets.Count - 2)
For a = 0 to (myInDesign.PrinterPresets.Count - 2)
myArray(a) = myInDesign.PrinterPresets.Item(a + 2)
Next
myFirstPage = CInt(myDocument.Pages.FirstItem)
myLastPage = CInt(myDocument.Pages.LastItem)
myRaz = Len(myDocument.Pages.LastItem)
'Диалог
Set myDialog = myInDesign.Dialogs.Add
myDialog.CanCancel = True
myDialog.Name = "Скрипт постраничного вывода PS v1.2"
Set myDialogColumn = myDialog.DialogColumns.Add
'Выбор стиля печати
Set myDialogRow = myDialogColumn.DialogRows.Add
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = "Стиль печати:"
Set myPrintStyle = myDialogRow.Dropdowns.Add
myPrintStyle.StringList = myArray
myPrintStyle.SelectedIndex = 3
'Выбор диапазона печати
Set myDialogRow = myDialogColumn.DialogRows.Add
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = "Диапазон печати: с "
Set myInt1 = myDialogRow.IntegerEditboxes.Add
myInt1.EditValue = myFirstPage
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = " по "
Set myInt2 = myDialogRow.IntegerEditboxes.Add
myInt2.EditValue = myLastPage
'Выбор пути
Set myDialogRow = myDialogColumn.DialogRows.Add
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = "Путь: "
Set myPath = myDialogRow.TextEditboxes.Add
myPath.EditContents = "d:\ps\in\"
myPath.MinWidth = 254
'Разрядность
Set myDialogRow = myDialogColumn.DialogRows.Add
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = "Количество разрядов в имени файлов: "
Set myRazryad = myDialogRow.IntegerEditboxes.Add
myRazryad.EditValue = 2
myRazryad.MinWidth = 60
'Добавление имени
Set myDialogRow = myDialogColumn.DialogRows.Add
Set myStaticText = myDialogRow.StaticTexts.Add
myStaticText.StaticLabel = "Добавить имя документа"
Set myDocName = myDialogRow.CheckboxControls.Add
myDocName.checkedState = true
'Анализ данных
If myDialog.Show = True Then
myPrintStyle = myInDesign.PrinterPresets.Item(myPrintStyle.SelectedIndex + 2)
myPath = myPath.EditContents
p1 = myInt1.EditValue
p2 = myInt2.EditValue
myRaz = myRazryad.EditValue
If myDocName.checkedState = True Then
myFileName = replace (myDocument.name, ".indd", "_")
End If
myDialog.Destroy
Else
myCancel = 1
End If
'Проверка диапазона
If p1 < myFirstPage or p1 > myLastPage or p2 < myFirstPage or p2 > myLastPage or p1 > p2 Then
If myCancel = 0 Then MsgBox "Указанный диапазон печати невозможен!", 0, "Ошибка!"
myCancel = 1
End If
'Проверка линков
myLinksCount = myDocument.Links.Count
For l = 1 to myLinksCount
Set myLink = myDocument.Links.Item(l)
If myLink.Status = idLinkStatus.idLinkMissing or myLink.Status = idLinkStatus.idLinkOutOfDate Then
MsgBox "Помещенный файл «" & myLink.Name & "» не найден или обновлен." & VbCr & "Исправьте ссылку и попробуйте еще раз.", 0, "Ошибка!"
myCancel = 1
Exit For
End If
Next
If myCancel = 0 Then
'Запись PS
Set myPreset = myInDesign.PrinterPresets.Item(myPrintStyle)
Err.Clear
For i = p1 to p2
myI1 = i
For r = Len(myI1) to (myRaz - 1)
myI1 = "0" & myI1
Next
On Error Resume Next
myInDesign.PrinterPresets.Item(myPrintStyle).PrintFile = myPath & myFileName & myI1& ".ps"
If Err.Number <> 0 Then
MsgBox "Указанного пути не существует!", 0, "Ошибка!"
Exit For
End If
myDocument.PrintPreferences.PageRange = i & "-" & i
myDocument.PrintOut False, myPreset
Next
End If
Else
MsgBox "Нет открытых документов!" & VbCr & "Откройте документ и попробуйте еще раз.", 0, "Ошибка!"
End If
If i = p2 + 1 Then MsgBox "Все готово!" & VbCr & "(с) Dmitriy N. Sakharov"