How to – powerpoint change default language on all slides Capitol I
Motivele pentru care am facut acest tutorial le gasiti aici.
Ca sa recapitula de ce avem nevoie: MS office 2010 cu Proofing Tools si/sau Multi Lang Pack.
Tutorialul explica situatia in care avem un fisier PowerPoint cu text in romana iar Language Default este setat in engleza si dorim sa modificam in romana. Binenteles ca se poate aplica si pentru alte “languages” (in RO nu suna prea bine 🙂 ), cu conditia sa avem instalat Proofing Tools si/sau Multi Lang Pack.
Continuarea cu cele 2 noi capitole le gasiti aici:
II. Implementarea a celor 2 fisiere .ppam si .pptm in MS Office (PowerPoint)
III. Utilizarea tool-ului
I. Generat fisiere .ppam si .pptm:
- languageAddin.ppam pt Add-ins (adaugat in bara de meniu).
- language.pptm pentru a executa macro
1. languageAddin.ppam
a). Deschide PowerPoint-ul si salveaza un un fisier nou cu extensia .pptm (languageAddin.pptm) in folderul My Documents (calea unde salvam este irelevanta).
selectam File/Save as iar la Save as Type alagem Powerpoint Macro Enebled Pesentation (*.pptm)
b). Adaugarea cod VB.
Deschidem interfata Visual Basic cu ajutoarul tastelor Alt-F11 si adaugam un nou modul folosind una din cele 2 metode:
metoda clasica din meniul Insert/Module

sau click dreapta pe VBAProject (Language.pptm) si selectam Insert/Module
Adaugam urmatorul cod in noul modul creat:
Sub Auto_Open()
'Note this will only fire automatically when in a loaded Add-in.
'
Dim strFileName As String
'Path for file with macros:
strFileName = CStr(Environ("USERPROFILE")) & "\Application Data\Microsoft\AddIns\language.pptm"
'Open the presentation with macros, but keep it hidden:
Application.Presentations.Open FileName:=strFileName, WithWindow:=msoFalse
End Sub
c). Salvati si iesiti din interfata Visual Basic.
Din interfata PowerPoint salvati fiserul cu extensia .ppam. Selectati din meniu File/Save As iar la Save as Type alagem PowerPoint Add-in (*.ppam).
Acesta se va salva automat in locatia default a directorului “AddIns” din profilul utilizatorului (%APPDATA%\Microsoft\AddIns), sau:
windows 7 :
%userprofile%\AppData\Roaming\Microsoft\AddIns
windows XP:
%userprofile%\Application Data\Microsoft\AddIns
2. language.ppam
a). Deschide PowerPoint-ul si salveaza un un fisier nou cu extensia .pptm (language.pptm) in folderul My Documents (calea unde salvam este irelevanta).
selectam File/Save as iar la Save as Type alagem Powerpoint Macro Enebled Pesentation (*.pptm)
b). Adaugarea cod VB.
Deschidem interfata Visual Basic cu ajutoarul tastelor Alt-F11 si adaugam un nou modul folosind una din cele 2 metode:
metoda clasica din meniul Insert/Module
sau click dreapta pe VBAProject (Language.pptm) si selectam Insert/Module
Adaugam urmatorul cod in noul modul creat:
Sub SetLangaugeFromSelection()
Dim lang As Office.MsoLanguageID
lang = -9999
On Error Resume Next
lang = Application.ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.languageID
On Error GoTo 0
If lang = -9999 Then
MsgBox ("Please select a text object from which the language should be copied")
ElseIf lang < 0 Then
MsgBox ("Invalid language code. Please apply a language to the entire text field, then try again.")
Else
Dim res As VbMsgBoxResult
res = MsgBox("Copy language setting from selection to entire presentation?", VbMsgBoxStyle.vbYesNo)
If (res = VbMsgBoxResult.vbYes) Then
SetLanguageTo (lang)
End If
End If
End Sub
Sub SetLanguageTo(lang As Office.MsoLanguageID)
Dim pres As Presentation
Set pres = ActivePresentation
pres.DefaultLanguageID = lang
' Fix slides
Dim slide As PowerPoint.slide
For Each slide In pres.Slides
SetLanguageOnShapes slide.Shapes, lang
Next
' Fix slide master
Dim customLayout As PowerPoint.customLayout
SetLanguageOnShapes pres.SlideMaster.Shapes, lang
For Each customLayout In pres.SlideMaster.CustomLayouts
SetLanguageOnShapes customLayout.Shapes, lang
Next
' Fix other masters
SetLanguageOnShapes pres.HandoutMaster.Shapes, lang
SetLanguageOnShapes pres.NotesMaster.Shapes, lang
If pres.HasTitleMaster Then SetLanguageOnShapes pres.TitleMaster.Shapes, lang
End Sub
Sub SetLanguageOnShapes(Shapes As PowerPoint.Shapes, languageID As Office.MsoLanguageID)
Dim shape As PowerPoint.shape
For Each shape In Shapes
SetLanguageOnShape shape, languageID
Next
End Sub
Sub SetLanguageOnShape(shape As PowerPoint.shape, languageID As Office.MsoLanguageID)
If shape.HasTextFrame Then
On Error Resume Next ' this sometimes fails for complex objects
shape.TextFrame.TextRange.languageID = languageID
On Error GoTo 0
End If
If shape.HasTable Then
Dim r, c As Integer
For r = 1 To shape.Table.Rows.Count
For c = 1 To shape.Table.Columns.Count
SetLanguageOnShape shape.Table.Cell(r, c).shape, languageID
Next
Next
End If
On Error GoTo NotAGroup ' enable error handling. multiple types have groupItems, and only way to check is to try
If Not shape.GroupItems.Count > 0 Then GoTo NotAGroup
On Error GoTo 0 ' disable error handling
Dim itemShape As PowerPoint.shape
For Each itemShape In shape.GroupItems
SetLanguageOnShape itemShape, languageID
Next
NotAGroup:
End Sub
Vezi oferta celor de la emag aici pentru Ms Office. Info despre aplicatii alternative gratuite la MS Office gasiti aici.
Continuarea cu cele 2 noi capitole le gasiti aici:
II. Implementarea a celor 2 fisiere .ppam si .pptm in MS Office (PowerPoint)
III. Utilizarea tool-ului





