0
votes

I start with a working example:

  • Open PowerPoint with a blank presentation.
  • Right-click the title slide and choose "Layout - Title and Content".
  • You see "• Click to add text"? Click and add some text.
  • Right-click the slide again and choose "Layout - Two Content".

See how smart PowerPoint can be?

  1. The text you entered in the single placeholder before is now in one the of two placeholders.
  2. Specifically, the left one.

My questions:

  1. Why? (And not in an extra one?)
  2. Why? (And not in the right one?)

My questions arises because I have received a set of master slides in which the above is not working, and I am trying to repair it without having to regenerate everything.

3
Regarding the one vote to close this: I would be totally fine with a programming solution :) in fact, I think that it is mainly a question of PowerPoint API/document format definition rather than clicking instructions, and I had assumed these might be on-topic here.bers

3 Answers

1
votes

This is a site for programming issues, but the background behind this issue might be sufficiently complex. Modern PowerPoint files are XML. In the XML for each slide layout, each placeholder has an idx reference number. PowerPoint uses these on numbers to decide where to place content.

Lazy Designer Syndrome is the cause of what you're seeing. Instead of creating new placeholders in order, so the idx numbers would increment in a logical order, the designer has copied and pasted placeholders to avoid extra formatting work. The pasted placeholders all have the same idx number. As a result, PowerPoint has no idea of placeholder order and inserts content randomly.

This isn't always easy to solve without editing the XML, but you can try deleting all but the leftmost placeholder. Then create new placeholders by inserting them one at a time and reformatting them manually to match the first.

1
votes

At first my attempts to follow the above failed, but now I got it working as well.

There are two different, but similar tags, id="" and idx="". All objects in the slide has an id="" tag, this is not the tag to solve this problem.

The idx="" tag is only on Placeholder objects, except the those of Type=Title. As described above you can set it to an integer value 1 and greater (I assume).

Make a plan for what Placeholder objects should be replaced across your layouts. I think of these as "groups" or "families", then assign the idx-values consistently throughout your slide layouts.

These "groups" or "families" of placeholders needs to be compatible for this to work, i.e. matching Type. The absence of Type means the placeholder is a general Content Type and match all Types.

During layout change, if Placeholders has incompatible Type while having the same idx-tag, PPT will look for the next Placeholder with matching Type.

0
votes

@JohnKorchok's accepted answer provides the technical details for the procedure described here. Note that I only had "Content Placeholders" in my presentation.

  • Install 7-Zip and your favorite text editor (you can use one with an XML formatter, which will simplify things, but it's not required).
  • Open your file.pptx in 7-Zip (no need to rename to .zip, just right-click and "Open Archive")
  • Navigate to ppt/slideLayouts.
  • See a list of slideLayout....xml files.
  • Identify the ones you want to edit, e.g., by opening each one and looking for <p:cSld name. (The numbers may be indicative only of the order the layouts have been created, not of the order in which they are now shown in PowerPoint - although saving a .pptx files in PowerPoint 2016 does modify the slide layouts for me so that the display order matches the file name numbers.)
  • Look for <p:ph until you find the ones you want to edit. You probably want to ignore the ones with type="title", type="ftr", type="sldNum".
  • Change the idx of all other placeholders to 1, 2, ... in the order in which you want them filled (use the <p:cNvPr ... name= to identify the placeholders).
  • Save the .xml files, close your editor, and be asked by 7-Zip to update the archive. Answer "Yes".

So I set the idx to 1 for the one placeholder in my 1-content layout, to 1 for the left placeholder in my 2-content layout, and to 2 for the right placeholder in my 2-content layout.