VBA: Как мне заставить этот код записывать только 2-значные имена файлов?

#vba #powerpoint

#vba #powerpoint

Вопрос:

Я использую следующий код VBA для экспорта слайдов PPT в изображения. Проблема в том, что для слайдов с 1 по 9 имена файлов содержат только один символ (например: «1.png»). Мне нужно, чтобы в имени файла этих первых девяти слайдов было ДВА символа (например: «01.png»), чтобы они соответствовали более поздним слайдам (например: «10.png»).

Как я могу это сделать?

Заранее спасибо!

 Sub Save_PowerPoint_Slide_as_Images()

Dim sImagePath As String
Dim sImageName As String
Dim oSlide As Slide '* Slide Object
Dim lScaleWidth As Long '* Scale Width
Dim lScaleHeight As Long '* Scale Height
On Error GoTo Err_ImageSave

For Each oSlide In ActivePresentation.Slides
sImageName = oSlide.SlideNumber amp; ".png"
oSlide.Export sImagePath amp; sImageName, "PNG"
Next oSlide

Err_ImageSave:
If Err <> 0 Then
MsgBox Err.Description
End If
End Sub

Function sImagePath() As String
sImagePath = ActivePresentaion.Path
End Function
  

Ответ №1:

попробуйте использовать Format ie

 sImageName = Format(oSlide.SlideNumber, "00") amp; ".png"
  

Комментарии:

1. Спасибо за очень быстрое завершение 🙂

2. Одно небольшое замечание: вы, вероятно, хотите использовать Slide. Индекс, а не слайд. Число. Слайд. Номер дает вам номер, который будет печататься при использовании нижних колонтитулов с номерами слайдов, и пользователь может изменить начальный номер в настройках страницы. На первом слайде может быть слайд. Число 0 или любая другая случайная вещь. Если вы используете слайд. Индекс, первый слайд ВСЕГДА будет равен 1, второй — 2 и так далее.

3. Это хороший момент, Стив, мой код был сосредоточен на проблеме форматирования. С уважением, Дэйв ( 1 к комментарию)

4. @brettdj Просто чтобы убедиться, тогда: эта строка должна гласить: sImageName = Format(oSlide. slideIndex, «00») amp; «.png» Кроме того, что, если мне нужно экспортировать имя файла в виде трех цифр? Это: sImageName = Format(oSlide. slideIndex, «000») amp; «.png» … похоже, это работает неправильно — я все еще получаю «01.png» вместо «001.png» Спасибо!