У меня есть код для создания PowerPoint с файлом Excel. Я в основном изменил код в соответствии с моим требованием, но я хочу добавить еще одну функцию в мой .ppt. Я хочу VBA извлечь номер недели из какого-либо источника и выполните следующие действия:Получение номера недели в PowerPoint
- Переименовать мой .ppt как «XXX_Weeknumber.ppt»
- В одном из текстовых полей в слайдах, которые я хочу добавить такую же НомерНеделю.
Я попытался получить номер недели с помощью функции WeekNum и попытаться вызвать функцию в моем основном Sub, но, к сожалению, не работает!
Мой код для функции в модуле 1:
Function WeekNum(D As Date) As Integer
WeekNum = CInt(Format(D, "ww", 2))
End Function
Код для .xls в .ppt в модуле 2:
Dim oPPTApp As PowerPoint.Application
Dim oPPTShape As PowerPoint.Shape
Dim oPPTShape2 As PowerPoint.Shape
Dim oPPTFile As PowerPoint.Presentation
Dim PPSlide As PowerPoint.slide
Dim SlideNum As Integer
Dim rng As Range
Dim WeekNumm$
Sub PPTableMacro()
Dim sourcexl As Workbook
Dim wk As Integer
Dim strPresPath As String, strExcelFilePath As String, strNewPresPath As String
strExcelFilePath = "C:\MySource.xls"
strPresPath = "C:\Presentation1.ppt"
Call WeekNum
WeekNumm = WeekNum()
Set wk = WeekNumm
strNewPresPath = "C:\Presentation1_" & wk & ".ppt" 'This is how I want the name
strNewPresPath = "C:\new1.ppt"
Set oPPTApp = CreateObject("PowerPoint.Application")
oPPTApp.Visible = msoTrue
Set oPPTFile = oPPTApp.Presentations.Open(strPresPath)
SlideNum = 2
oPPTFile.Slides(SlideNum).Select
Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Table 1")
Set sourcexl = Workbooks.Open(strExcelFilePath) 'Source excel file
With sourcexl
.Sheets("Sheet1").Activate
oPPTShape.Table.Cell(1, 1).Shape.TextFrame.TextRange.Text = Cells(1, 1).Text
oPPTShape.Table.Cell(1, 2).Shape.TextFrame.TextRange.Text = Cells(1, 2).Text
oPPTShape.Table.Cell(1, 3).Shape.TextFrame.TextRange.Text = Cells(1, 3).Text
oPPTShape.Table.Cell(2, 1).Shape.TextFrame.TextRange.Text = Cells(2, 1).Text
oPPTShape.Table.Cell(2, 2).Shape.TextFrame.TextRange.Text = Cells(2, 2).Text
oPPTShape.Table.Cell(2, 3).Shape.TextFrame.TextRange.Text = Cells(2, 3).Text
End With
Set oPPTShape2 = oPPTFile.Slides(SlideNum).Shapes("TextBox 1")
Text1 = "weekXX" ' actually wanted week number here
oPPTShape2.TextFrame.TextRange.Text = Text1
oPPTFile.SaveAs strNewPresPath
'oPPTFile.Close
'oPPTApp.Quit
Set oPPTShape = Nothing
Set oPPTFile = Nothing
Set oPPTApp = Nothing
MsgBox "Presentation Created", vbOKOnly + vbInformation
End Sub
Привет Израиль, Спасибо за ваш ответ. Я хотел бы уточнить, я хочу номер недели в году. например, если предположить, что сегодняшняя дата 21 октября означала бы, что номер недели = 43. Также не могли бы вы сообщить мне, где я должен поместить код? – Yusuf
Вы имеете в виду свою функцию? Или весь ваш код? Функция, которую она обычно размещает внутри модуля, таким образом вы можете получить к ней доступ в любом месте (пользовательские формы, другие модули, классы, рабочий лист). Что касается всего кода, вы можете иметь идеал отсюда: [link] (http://www.contextures.com/xlvba01.html) .... Вы также можете сделать из него VBScript и запустить его самостоятельно вне офисная платформа. Существует также компилятор для него: [link] (http://www.vbsedit.com/) –
Я имел в виду размещение «строки» кода/функции, если кто-нибудь мог бы предложить мне получить номер недели. Ну, в любом случае я сделал это легко ... Я просто ссылался на Weeknumber из обычной формулы Excel на листе и работал без каких-либо проблем. Спасибо за ваше терпение. Приветствия :) – Yusuf