<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>powerpoint on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/powerpoint/</link>
    <description>Recent content in powerpoint on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 02 Feb 2022 10:01:11 +0000</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/powerpoint/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/harry-potter-bar-chart-race-powerpoint/</link>
      <pubDate>Wed, 23 Jun 2021 14:14:05 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/harry-potter-bar-chart-race-powerpoint/</guid>
      <description>&lt;p&gt;The #HarryPotter Screen Time video featured a bar chart race made in PowerPoint. Many of you asked how I made it.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a step-by-step tutorial. &lt;a href=&#34;https://youtu.be/E1SeoUV8awI&#34;&gt;https://youtu.be/E1SeoUV8awI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(BTW, there are just 9 people on LinkedIn who match &amp;ldquo;bar chart race&amp;rdquo; and #powerpoint. This is for you, friends!)&lt;/p&gt;
&lt;p&gt;Gramener converted this feature into a product, SlideSense.ai. But more on that later 🙂&lt;/p&gt;
&lt;p&gt;The original video is at &lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Aactivity%3A6801138072068214784/&#34;&gt;https://www.linkedin.com/feed/update/urn%3Ali%3Aactivity%3A6801138072068214784/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://i.ytimg.com/vi/E1SeoUV8awI/maxresdefault.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A6813469199395106816&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/harry-potter-lightboard/</link>
      <pubDate>Thu, 20 May 2021 13:34:35 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/harry-potter-lightboard/</guid>
      <description>&lt;p&gt;This is my first Lightboard video &amp;ndash; interacting with a data visualization on-camera.&lt;/p&gt;
&lt;p&gt;Hans Rosling did something like this with BBC 4. That&amp;rsquo;s been my inspiration.&lt;/p&gt;
&lt;p&gt;In this video, I share the screen time of the Harry Potter supporting cast. The bar chart race was created in PowerPoint, and the lightboard effect was created with OBS. (I&amp;rsquo;ll share a tutorial soon.)&lt;/p&gt;
&lt;p&gt;What do you think of the video? Any comments? Questions?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3AugcPost%3A6801138071673950208&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/powerpoint-can-do-anything/</link>
      <pubDate>Fri, 23 Apr 2021 16:12:55 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/powerpoint-can-do-anything/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve a theory. PowerPoint can do anything. (Excel too).&lt;/p&gt;
&lt;p&gt;Shape operations are especially powerful. In this tutorial, I create an address card icon and export it as SVG.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t need Sketch / Illustrator for this. They&amp;rsquo;re great. But no, thanks. I&amp;rsquo;m pretty good with PowerPoint 😄&lt;/p&gt;
&lt;p&gt;Have you seen PowerPoint do anything that made you go &amp;ldquo;Wow! This is cool!&amp;rdquo;? Do share. I&amp;rsquo;d love to hear about it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.s-anand.net/blog/designing-complex-shapes-in-powerpoint/&#34;&gt;http://www.s-anand.net/blog/designing-complex-shapes-in-powerpoint/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A6791393446859952129&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Designing Complex Shapes in PowerPoint</title>
      <link>https://www.s-anand.net/blog/designing-complex-shapes-in-powerpoint/</link>
      <pubDate>Sun, 18 Apr 2021 04:26:11 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/designing-complex-shapes-in-powerpoint/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Designing Complex Shapes in PowerPoint&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-28.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I use PowerPoint instead of Adobe Illustrator or Sketch. I&amp;rsquo;m familiar with it, and it does everything I need.&lt;/p&gt;
&lt;p&gt;One of the features I&amp;rsquo;m really excited by in PowerPoint is the ability to manipulate shapes.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-19.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s say you have a rectangle and a circle. You can select both of these shapes and in the Shape Format &amp;gt; Merge Shapes dropdown, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;merge them with a &lt;strong&gt;union&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;combine&lt;/strong&gt; them (like an XOR operation in Boolean algebra)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fragment&lt;/strong&gt; them, which breaks them up into pieces&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;intersect&lt;/strong&gt; them&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;subtract&lt;/strong&gt; them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is so powerful that you can create any kind of shape. Let&amp;rsquo;s take an icon from &lt;a href=&#34;https://fontawesome.com/&#34;&gt;Font Awesome&lt;/a&gt; at random &amp;ndash; say an &lt;a href=&#34;https://fontawesome.com/icons/address-card&#34;&gt;address card&lt;/a&gt; &amp;ndash; and create it.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-21.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the video of the process. I&amp;rsquo;ll explain it step-by-step below.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/Kwa0N5M-3ag&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;First, let&amp;rsquo;s take a screenshot of this and copy it into PowerPoint.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-23.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s draw over this. So we&amp;rsquo;ll start with a rounded rectangular box with the same color as the address card. We can use the &lt;a href=&#34;https://support.microsoft.com/en-us/office/use-eyedropper-to-match-colors-on-your-slide-d5e7a32a-da6c-4bed-9f1e-8797f07174e9&#34;&gt;eyedropper&lt;/a&gt; to pick the right color. Remove the outline. Then match the edges as closely as you can. (Add a bit of transparency so you can see through it &amp;ndash; that helps match edges closely.)&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-24.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Move this card boundary to a new page.&lt;/p&gt;
&lt;p&gt;Now, on top of the original image we copy-pasted from Font Awesome, trace 3 rounded rectangles for the address lines. Trace a circle over the head. Fill them white. Remove the outline. It should look like these.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-28.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Next, let&amp;rsquo;s create the body. We&amp;rsquo;ll create a rounded rectangle that matches the bottom half of the body, another that matches the top half of the body, and intersect them, like this:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/ppt-shapes-bust.gif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Then, draw a large circle around the head and subtract it from the body, like this:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/ppt-shapes-neck.gif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Finally, copy all these shapes over the card boundary on the next page. Select the card boundary first. Then select these copied shapes (3 address lines, head, and bust). Select Shape Format &amp;gt; Merge Shapes &amp;gt; Subtract.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/ppt-shapes-address-card.gif&#34;&gt;&lt;/p&gt;
&lt;p&gt;With that, we have a single shape that contains the entire address card. The white areas are transparent.&lt;/p&gt;
&lt;p&gt;You can download the Merge-Shapes.pptx file below with each of the steps.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.s-anand.net/images/Merge-Shapes.pptx&#34;&gt;Merge-Shapes&lt;/a&gt; (Download)&lt;/p&gt;
&lt;p&gt;Like I said, I don&amp;rsquo;t bother with Adobe Illustrator or Sketch. PowerPoint does it all for me 😊.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>How to direct a data movie</title>
      <link>https://www.s-anand.net/blog/how-to-direct-a-data-movie/</link>
      <pubDate>Sun, 07 Feb 2021 15:34:43 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/how-to-direct-a-data-movie/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;How to direct a data movie&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/rubiks-cube.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gkesari.com/&#34;&gt;Ganes&lt;/a&gt; and I created a data movie on speed-cubing records as part of a Gramener hackathon.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/V0OINTYrA8M&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Here&amp;rsquo;s a video of us talking about how we created it.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/uxaPeIXP6E4&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: We picked the Rubik&amp;rsquo;s cube story for this hackathon. Tell me more about how this excited you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Since my son started solving the Rubik&amp;rsquo;s cube a few months back, I&amp;rsquo;ve been fascinated with these competitions. I still don&amp;rsquo;t know how to solve it, but I like watching it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: But &lt;strong&gt;he&lt;/strong&gt; does?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Yeah, he does. So, in the competitions, I&amp;rsquo;ve seen kids solving the Rubik&amp;rsquo;s cube in under 10 seconds. So that was the first source of amazement. I&amp;rsquo;ve seen kids doing it with one hand, blindfolded. I first couldn&amp;rsquo;t believe it. Doing it with their legs. So that got me really interested.&lt;/p&gt;
&lt;p&gt;When we were talking about this, and I was sharing my amazement, we were talking about the hackathon and the conversations kind of merged. So that, I think, the curiosity around it led to picking this as the story.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: And what was the next step?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: I have always seen the &lt;a href=&#34;https://www.worldcubeassociation.org/&#34;&gt;World Cube Association&lt;/a&gt; publishing these records. Their &lt;a href=&#34;https://www.worldcubeassociation.org/results/rankings/333/single&#34;&gt;website&lt;/a&gt; is great. So I thought maybe we could scrape from that, and that’s when I start looking at the website and the competitions we can pick. and then I stumbled on the &lt;a href=&#34;https://www.worldcubeassociation.org/results/misc/export.html&#34;&gt;export feature&lt;/a&gt; where they have multiple formats neatly curated that you can take and directly start the analysis.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Which was actually a big factor in deciding to go for this. Big data set. Very rich, interesting possibilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: So we had had some five or six ideas. This immediately shot up to the top. So after we got the idea, you kind of took over. I think after I mentioned that all these formats were available, it got you excited. So what did you do after that?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Then it became a question of what all interesting things we can find. It&amp;rsquo;s almost an exploratory data analysis, but my approach to EDA (exploratory data analysis) is: let&amp;rsquo;s formulate the hypotheses and then validate, and see if there Is an interesting story behind it.&lt;/p&gt;
&lt;p&gt;So it begins with, for instance, the speed at which records have been broken. Today, it&amp;rsquo;s at 3½ seconds. We know that. But how fast did it fall? Or: what&amp;rsquo;s the spread of solving-speed for somebody who solves it fast? Does the same person solve it really fast sometimes and really slow sometimes? Is there a movement in their average? You said, &amp;ldquo;Let&amp;rsquo;s see how much longer it takes to solve bigger cubes.&amp;rdquo; Nikhil was going to take the demographics of solvers and see how they&amp;rsquo;re spread out. There are definitely a lot of Chinese solves in the spread. So, the thing was, let&amp;rsquo;s look at possible ideas that could lead to an interesting answer, and then validate those.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: It was almost like &amp;ldquo;What would &lt;strong&gt;we&lt;/strong&gt; be interested in finding out&amp;rdquo; and not necessarily like looking at the column of data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Yes. And that I think is important, because, from the data, there may be some ideas. But after absorbing it, knowing what&amp;rsquo;s &lt;strong&gt;interesting&lt;/strong&gt; is what should drive the story.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Right. Yeah. So that was a good starting point. We listed all of these on the board. Then, what did you do next?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Then it&amp;rsquo;s about proving these. So, we know here are some possible interesting stories, and let us explore and validate whether these &lt;strong&gt;are&lt;/strong&gt;, in fact, interesting, or can be turned into something interesting. So, when I looked at the speed at which records were broken, for instance, I &lt;strong&gt;thought&lt;/strong&gt; that would be an interesting story. But it wasn&amp;rsquo;t. It was just getting broken at a steadily successive pace.&lt;/p&gt;
&lt;p&gt;But something that I did &lt;strong&gt;not&lt;/strong&gt; expect emerged, which is that Wusheng Du, who holds the world record, is not the person who was there in the records consistently. In fact, Felix Zemdegs has been the consistent winner for the last 10 years and is the only cubing champion who&amp;rsquo;s won the WCA twice. So, that was something that &lt;strong&gt;emerged&lt;/strong&gt; from doing the analysis. So, that has the ability, therefore, of both proving what we&amp;rsquo;re looking to prove (or disproving), and also coming up with new stuff that we can choose to incorporate into the story.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Almost like starting with a business hypothesis, or what, in the enterprise world, the business wants to know, and then once you get into the data, the data is revealing a few interesting insights, and then you kind of marry both. Looks just like that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Exactly. Exactly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: So, we identified the insights. And then, the target here was to come up with a 2 minute video. So how did you plan from insights to the video.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: So, one of my cousins is a director, and she tried explaining to me the concept of a screenplay. I never really understood it, even though I&amp;rsquo;ve read a number of screenplays. So, in the last hackathon, when I was creating a (data) movie, that&amp;rsquo;s when I realised: as I started writing what I want to shoot (because it requires a whole lot of planning), I was effectively writing a screenplay.&lt;/p&gt;
&lt;p&gt;The steps are, basically, you have to decide what are the frames or the sequences you want to shoot. So, one sequence was: we want to introduce this Rubik&amp;rsquo;s cube win. Another sequence was: we want to show how quickly different types of cubes can be solved, etc.&lt;/p&gt;
&lt;p&gt;So, for each of these, what I do is: create a storyline that has the following structure. One: what is the message I want people to take away from that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: The headline from there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Exactly.&lt;/p&gt;
&lt;p&gt;And then, in order to do that, what are the words I would narrate on top of it? That literally forms the dialogue. The third thing is, what are the visuals that prove the dialogue. That I structure in the form of a video. The fourth thing is the transition &amp;ndash; from one video to another, or from one sequence to another, how do I flow. These are the 4 things that I captured.&lt;/p&gt;
&lt;p&gt;When I write down the full dialogue. I speak it out, put in a timer, and then say &amp;ldquo;OK, this took 10 seconds, this took 15 seconds, this took 14 seconds&amp;rdquo; and so on.&lt;/p&gt;
&lt;p&gt;Then comes the process of recording (the audio). Assembling the visuals, yes, but timing it and sequencing it based on the recording is pretty critical. So, actually, I wanted your voice - it&amp;rsquo;s better. And initially, I wanted you to do the recording, but because you were busy in the Dell workshop, I had to do the recording to make sure that I get the timing. Then you re-recorded post that.&lt;/p&gt;
&lt;p&gt;That recording makes a huge difference. The audio quality on my iPhone is better than the laptop. I transfer it via Dropbox on to the system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Were there some issues because you have some insights and you have a certain sequence, but it may not add up to 2 minutes. Or, there might be something which will just not flow. How do you correct those issues?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: I found that I consistently underestimate (the time). I thought that we only have material for 1½ minutes, but I knew at that point that invariably, because of this bloat, it will somehow add up to 2 minutes. Which is exactly what happened. It moved to 2 minutes 4 seconds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Yes. Exactly. Yeah.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: So, once you&amp;rsquo;ve done it once or twice, that amount of correction is there. It&amp;rsquo;s in fact a whole lot easier to control a video than something as crazy as a (software) program, for instance. The estimation error in programming is much higher than this.&lt;/p&gt;
&lt;p&gt;The good part is that post production or editing can take care of a lot of stuff. That 2-minute video &lt;strong&gt;can&lt;/strong&gt; be cut to 1½ if required.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Yeah, it can be improved, but my biggest fear is: after recording, the post production is a nightmare. It takes hours and hours of effort. A five-minute video, to post, probably takes 2 hours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: That is true.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: How do you go about it? After having these audio clippings, videos and images, how do you stitch all together into a video?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: My workflow is on &lt;a href=&#34;https://en.wikipedia.org/wiki/Microsoft_PowerPoint&#34;&gt;PowerPoint&lt;/a&gt;, mostly, and then on &lt;a href=&#34;https://support.microsoft.com/en-us/windows/create-films-with-video-editor-94e651f8-a5be-ae03-3c50-e49f013d47f6&#34;&gt;Windows Video Editor&lt;/a&gt;. And then you introduced &lt;a href=&#34;https://www.apple.com/in/imovie/&#34;&gt;iMovie&lt;/a&gt; into the mix.&lt;/p&gt;
&lt;p&gt;PowerPoint makes it fairly simple. I can put in an audio in the background. I can handle the animations. It&amp;rsquo;s not a great tool at all, but it&amp;rsquo;s a tool I&amp;rsquo;m very familiar with. So, my workflow is: one slide is one shot or one headline in the storyline. Then I record the video independently or download it from YouTube, put it in the background or wherever. Create all the visuals, create the animations around it, put it there. At this point, the raw material is in. Then I insert the audio and let it play the background for that particular slide. Then I time the animation to the audio.&lt;/p&gt;
&lt;p&gt;This is a slow process because PowerPoint doesn&amp;rsquo;t have the right tools. So I play the audio till that point and then set the animation. Then I start from the beginning again, play the audio to the next point, and then set that animation. Which takes a long duration. But once that&amp;rsquo;s sorted out, I play that full slide and it works out, I then go back and correct.&lt;/p&gt;
&lt;p&gt;The good part is that the audio is the time keeper. I pre-recorded the audio. So I know that the entire duration is only going to be 1.8 minutes (and then towards the end we added a few more vidoes that took it to 2 minutes). So the audio keeps you in control, and if you synchronize everything to the audio, then it becomes easier.&lt;/p&gt;
&lt;p&gt;Then I exported it into a video file from PowerPoint directly, and then did a little bit of post-processing, adding a background music and adding a few captions, mostly, on Windows Video Editor, and then gave it to you. Which was at around 9 o&amp;rsquo;clock or so. What did &lt;strong&gt;you&lt;/strong&gt; do from 9 o&amp;rsquo;clock to 3 o&amp;rsquo;clock?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: So, the first thing &amp;ndash; on the PowerPoint, I couldn&amp;rsquo;t believe that you&amp;rsquo;d done all this on PowerPoint. Yes, you&amp;rsquo;re taking the tool beyond the limit it was designed for.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been working with iMovie for a year, and I find it very powerful. For someone who doesn&amp;rsquo;t come from that background, it was very easy for me to pick up. I had the images and raw video footage for the different portions we were trying to introduce. I was able to split the audio that you recorded from the video, and then was able to record mine and add it. iMovie has these multiple streams you can insert and remove. I had one stream for my audio for my voice over. And there was this video which you had.&lt;/p&gt;
&lt;p&gt;On top of that, I could overlay the pictures and other videos that I had towards the end &amp;ndash; two videos playing side-by-side. So all of that was possible. and then I could also introduce background music at the very end. iMovie makes it very easy to move all of these things around. And even the synchronization issue which you told about, that&amp;rsquo;s much easier to resolve in iMovie.&lt;/p&gt;
&lt;p&gt;So, all of this finally coming together, I think, at 3 o&amp;rsquo;clock… when I had all of this, at 3 o&amp;rsquo;clock I was hunting for the background music (laughs). I was playing all kinds of clips and finally I chose one. So that&amp;rsquo;s how we got the final YouTube video.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: My lesson from this is: make sure you have a team member who has a Mac!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ganes&lt;/strong&gt;: Right, yeah. So let&amp;rsquo;s go back and look at our video and see what we can learn from it. Thank you!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Create SVG with PowerPoint</title>
      <link>https://www.s-anand.net/blog/create-svg-with-powerpoint/</link>
      <pubDate>Mon, 21 Dec 2020 16:24:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/create-svg-with-powerpoint/</guid>
      <description>&lt;p&gt;With Office 365, &lt;a href=&#34;https://support.microsoft.com/en-us/office/edit-svg-images-in-microsoft-office-365-69f29d39-194a-4072-8c35-dbe5e7ea528c&#34;&gt;PowerPoint supports SVG editing&lt;/a&gt;. This is really powerful. It means you can draw in PowerPoint and render it on the web &amp;ndash; including as interactive or animated visuals.&lt;/p&gt;
&lt;p&gt;For example, the SVG in this &lt;a href=&#34;https://gramener.com/processmonitor/simulator&#34;&gt;simulator&lt;/a&gt; was created just with PowerPoint.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gramener.com/processmonitor/simulator&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/proxy.gif&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The process is simple. Draw anything. Select any shapes and right-click. Select Save As Picture&amp;hellip; and choose SVG.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-6.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;For example, you can use PowerPoint to create Smart Art, export it as SVG, and embed it into a page. See this example on &lt;a href=&#34;https://codepen.io/sanand0/pen/poEwYYy&#34;&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;iframe allowfullscreen=&#34;true&#34; allowtransparency=&#34;true&#34; frameborder=&#34;no&#34; height=&#34;480&#34; loading=&#34;lazy&#34; scrolling=&#34;no&#34; src=&#34;https://codepen.io/sanand0/embed/poEwYYy?height=480&amp;amp;theme-id=light&amp;amp;default-tab=result&#34; style=&#34;width: 100%;&#34; title=&#34;Smart Art SVG&#34;&gt;
  See the Pen &lt;a href=&#34;https://codepen.io/sanand0/pen/poEwYYy&#34;&gt;Smart Art SVG&lt;/a&gt; by S Anand
  (&lt;a href=&#34;https://codepen.io/sanand0&#34;&gt;@sanand0&lt;/a&gt;) on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.
&lt;/iframe&gt;
&lt;p&gt;The SVG is fairly well structured and easy to edit. The code generated for these 2 simple shapes:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-8.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; is quite straight-forward &amp;ndash; just two SVG shapes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-svg&#34; data-lang=&#34;svg&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;rect&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;x=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;125.5&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;y=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;185.5&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;width=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;107&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;height=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;107&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;#2F528F&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke-width=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1.33333&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke-miterlimit=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;8&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;#4472C4&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;path&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;d=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M243.5 292.5 297 185.5 350.5 292.5Z&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;#2F528F&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke-width=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1.33333&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;stroke-miterlimit=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;8&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;#4472C4&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;fill-rule=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;evenodd&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was worried about the lack of SVG authoring tools in Windows. (InkScape is not usable, and Adobe&amp;rsquo;s tools are complex and expensive.) PowerPoint fits perfectly.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/5ndouHSYGxA&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
</description>
    </item>
    <item>
      <title>Make backgrounds transparent</title>
      <link>https://www.s-anand.net/blog/make-backgrounds-transparent/</link>
      <pubDate>Wed, 28 Apr 2010 06:57:37 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/make-backgrounds-transparent/</guid>
      <description>&lt;p&gt;This is the simplest way that I’ve found to make the background colour of an image transparent.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://portableapps.com/apps/graphics_pictures/gimp_portable&#34;&gt;Download GIMP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open your image. I’ll pick this one:&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme1.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme1.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Optional: Select Image – Mode – RGB if it’s not RGB.&lt;/li&gt;
&lt;li&gt;Select Colors – Colors to Alpha…&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme2.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme2.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click on the white button next to “From” and select the eye-dropper.&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme3.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme3.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pick the green colour on the image, and click OK&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme4.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme4.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The anti-aliasing is preserved as well.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vinu&lt;/strong&gt; &lt;em&gt;28 Apr 2010 11:21 pm&lt;/em&gt;:
There is a tool in MS Office products (Word, Excel, PowerPoint) to set the transparent color as well, assuming of course that you plan to embed the image in a document&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;29 Apr 2010 7:19 am&lt;/em&gt;:
Need to use the image in web pages, mostly. Would this MS Office tool still work?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;29 Apr 2010 7:20 am&lt;/em&gt;:
True, Ravi. I need to automate this task, though. Tried ImageMagick at first, but gave up after a while.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vinu&lt;/strong&gt; &lt;em&gt;30 Apr 2010 5:51 pm&lt;/em&gt;:
Good question. If you use a drag and drop, WYSIWYG web page editor, then perhaps it will translate. I tested it between Powerpoint &amp;amp; Word and it worked.
Here&amp;rsquo;s the location of the control on PowerPoint 2007: on the Picture Tools /Format ribbon&amp;gt; Recolor (in the Adjust group, first from the left) drop down to &amp;ldquo;Set Transparent Color&amp;rsquo;.
Keyboard accelerator = Alt + J P E S.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.raviatluri.in&#34;&gt;Atluri&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;28 Apr 2010 3:59 pm&lt;/em&gt;:
This works well only for text and images with strong contrast against their background
text as an image is outdated ;)
and for images i would use blend-&amp;gt;merge-&amp;gt;eraser for edges!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://bit.ly/vipulrawal&#34;&gt;Vipul&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;13 May 2010 5:31 am&lt;/em&gt;:
Remove background option in MS-PowerPoint 2010 works even better. In love with that feature. :)&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Automating PowerPoint with Python</title>
      <link>https://www.s-anand.net/blog/automating-powerpoint-with-python/</link>
      <pubDate>Thu, 02 Apr 2009 20:22:36 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/automating-powerpoint-with-python/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Automating PowerPoint with Python&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/automating-powerpoint-with-python.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Writing a program to draw or change slides is sometimes easier than doing it manually. To change all fonts on a presentation to Arial, for example, you’d write this Visual Basic macro:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vb&#34; data-lang=&#34;vb&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Sub&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;Arial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;For&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;Each&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;In&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ActivePresentation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;For&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;Each&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Shape&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;In&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shapes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Shape&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextRange&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Font&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Arial&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;Sub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you didn’t like Visual Basic, though, you &lt;strong&gt;could&lt;/strong&gt; write the same thing in Python:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;win32com.client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PowerPoint.Application&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Visible&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Presentations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Shape&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shapes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Shape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextRange&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Font&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Arial&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Quit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save this as &lt;code&gt;arial.py&lt;/code&gt; and type &lt;code&gt;“arial.py some.ppt”&lt;/code&gt; to convert &lt;code&gt;some.ppt&lt;/code&gt; into Arial.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-powerpoint-in-python_3404204235_o-png.webp&#34;&gt;&lt;img alt=&#34;Screenshot of Python controlling PowerPoint&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-powerpoint-in-python_3404204235_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s break that down a bit. &lt;code&gt;import win32com.client&lt;/code&gt; lets you interact with Windows using &lt;a href=&#34;http://en.wikipedia.org/wiki/Component_Object_Model&#34;&gt;COM&lt;/a&gt;. You need &lt;a href=&#34;http://www.activestate.com/activepython/&#34;&gt;ActivePython&lt;/a&gt; to do this. Now you can launch PowerPoint with&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PowerPoint.Application&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Application object you get here is the same Application object you’d use in Visual Basic. That’s pretty powerful. What that means is, to a good extent, you can copy and paste Visual Basic code into Python and expect it to work with minor tweaks for language syntax, just please make sure to learn &lt;a href=&#34;https://blog.couchbase.com/tips-and-tricks-for-upgrading-from-python-2-to-python-3/&#34;&gt;how to update python&lt;/a&gt; before doing anything else.&lt;/p&gt;
&lt;p&gt;So let’s try to do something with this. First, let’s open PowerPoint and add a blank slide.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open PowerPoint&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PowerPoint.Application&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create new presentation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Presentations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add a blank slide&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That 12 is the code for a blank slide. In Visual Basic, you’d instead say:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ppLayoutBlank&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To do this in Python, run &lt;code&gt;Python/Lib/site-packages/win32com/client/makepy.py&lt;/code&gt; and pick “Microsoft Office 12.0 Object Library” and “Microsoft PowerPoint 12.0 Object Library”. (If you have a version of Office other than 12.0, pick your version.)&lt;/p&gt;
&lt;p&gt;This creates two Python files. I rename these files as &lt;code&gt;MSO.py&lt;/code&gt; and &lt;code&gt;MSPPT.py&lt;/code&gt; and do this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;MSPPT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;globals&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSPPT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSPPT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This makes constants like &lt;code&gt;ppLayoutBlank&lt;/code&gt;, &lt;code&gt;msoShapeRectangle&lt;/code&gt;, etc. available. So now I can create a blank slide and add a rectangle Python just like in Visual Basic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ppLayoutBlank&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shapes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AddShape&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;msoShapeRectangle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Incidentally, the dimensions are in points (1/72&amp;quot;). Since the default presentation is 10&amp;quot; x 7.5&amp;quot; the size of each page is 720 x 540.&lt;/p&gt;
&lt;p&gt;Let’s do something that you’d have trouble doing manually in PowerPoint: a &lt;a href=&#34;http://www.cs.umd.edu/hcil/treemap-history/&#34;&gt;Treemap&lt;/a&gt;. &lt;a href=&#34;http://www.guardian.co.uk/&#34;&gt;The Guardian’s&lt;/a&gt; &lt;a href=&#34;http://www.guardian.co.uk/data-store&#34;&gt;data store&lt;/a&gt; kindly makes available the &lt;a href=&#34;http://spreadsheets.google.com/pub?key=phNtm3LmDZEOoyu8eDzdSXw&#34;&gt;top 50 banks by assets&lt;/a&gt; that we’ll use for this example. Our target output is a simple Treemap visualisation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-treemap_3407796884_o-jpg.webp&#34;&gt;&lt;img alt=&#34;Treemap&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-treemap_3407796884_o-jpg.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We’ll start by creating a blank slide. The code is as before.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;win32com.client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;MSPPT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;globals&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSPPT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MSPPT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;PowerPoint.Application&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Visible&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Presentations&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Presentation&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Slides&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ppLayoutBlank&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now let&amp;rsquo;s import data from The Guardian. The spreadsheet is available at &lt;a href=&#34;http://spreadsheets.google.com/pub?key=phNtm3LmDZEOoyu8eDzdSXw&#34; title=&#34;http://spreadsheets.google.com/pub?key=phNtm3LmDZEOoyu8eDzdSXw&#34;&gt;http://spreadsheets.google.com/pub?key=phNtm3LmDZEOoyu8eDzdSXw&lt;/a&gt; and we can get just the banks and assets as a CSV file by adding &lt;code&gt;&amp;amp;output=csv&amp;amp;range=B2:C51&lt;/code&gt; (via &lt;a href=&#34;http://ouseful.wordpress.com/2009/03/10/using-many-eyes-wikified-to-visualise-guardian-data-store-data-on-google-docs/&#34;&gt;OUseful.Info&lt;/a&gt;).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;urllib2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;csv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://spreadsheets.google.com/pub?key=phNtm3LmDZEOoyu8eDzdSXw&amp;amp;output=csv&amp;amp;range=B2:C51&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open the URL using a CSV reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;csv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;urllib2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;urlopen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Convert the CSV into a list of (asset-size, bank-name) tuples&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I created a simple Treemap class based on the &lt;a href=&#34;http://www.win.tue.nl/~vanwijk/stm.pdf&#34;&gt;squarified algorithm&lt;/a&gt; — you can play with the &lt;a href=&#34;https://files.s-anand.net/blog/a/treemap.zip&#34;&gt;source code&lt;/a&gt;. This Treemap class can be fed the data in the format we have, and a draw function. The draw function takes (x, y, width, height, data_item) as parameters, where data_item is a row in the data list that we pass to it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;draw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Draw the box&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;shape&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Slide&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Shapes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AddShape&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;msoShapeRectangle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Add text: bank name (asset size in millions)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;shape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextRange&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; (&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;M)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Reduce left and right margins&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;shape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MarginLeft&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MarginRight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Use 12pt font&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;shape&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextFrame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TextRange&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Font&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Treemap&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Treemap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 720pt x 540pt is the size of the slide.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Treemap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;720&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;540&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;draw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Try running the &lt;a href=&#34;https://files.s-anand.net/blog/a/treemap.zip&#34;&gt;source code&lt;/a&gt;. You should have a single slide in PowerPoint like this.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-treemap-plain_3407796888_o-jpg.webp&#34;&gt;&lt;img alt=&#34;Plain Treemap&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-treemap-plain_3407796888_o-jpg.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The beauty of using PowerPoint as the output format is that converting this into a cushioned Treemap with gradients like below (or changing colours, for that matter), is a simple interactive process.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-treemap-powerpoint_3407820202_o-png.webp&#34;&gt;&lt;img alt=&#34;Treemap in PowerPoint&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-treemap-powerpoint_3407820202_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://python-catalin.blogspot.com/&#34;&gt;Catalin&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;5 Apr 2009 8:01 am&lt;/em&gt;:
Very interesting article. I think python may be the best solution on programming .
Do you worked with python and openoffice ?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://mb.netsons.org&#34;&gt;Michele&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;5 Apr 2009 10:35 am&lt;/em&gt;:
Very very interesting. The treemap integration is absolutely phenomenal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.third-bit.com&#34;&gt;Greg Wilson&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;3 Apr 2009 9:46 pm&lt;/em&gt;:
Thanks very much for posting this &amp;mdash; much appreciated. One question: how do you find documentation on the PowerPoint API? Is it just the same as the VB (with appropriate substitutions)? Or&amp;hellip;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;5 Apr 2009 4:15 pm&lt;/em&gt;:
Never worked with OpenOffice, I&amp;rsquo;m afraid. If I don&amp;rsquo;t use Microsoft Office, my next preference would be Google&amp;rsquo;s online offerings, I guess. But either way, Python&amp;rsquo;s an elegant choice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;4 Apr 2009 6:59 am&lt;/em&gt;:
It&amp;rsquo;s the same as with VB. I just press Shift-F1 on VB in PowerPoint and search for the keywords. Usually, it&amp;rsquo;s quite intuitive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://crankycoder.com/2009/05/07/links-for-may-7th/&#34;&gt;crankycoder.com » Links for May 7th&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;7 May 2009 5:06 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] Automating PowerPoint with Python - [&amp;hellip;]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.powerpoint.in&#34;&gt;Raj&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;24 May 2009 7:03 pm&lt;/em&gt;:
Its all Intresting Anand&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/blog/round-buttons-with-python-image-library/&#34;&gt;Round buttons with Python Image Library | s-anand.net&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;11 Jun 2009 10:41 am&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] it using PowerPoint via Python and export as a PNG.So we make a curved box, put in the appropriate gradients and borders, and [&amp;hellip;]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://financialpython.wordpress.com/2009/08/08/python-and-powerpoint/&#34;&gt;Python and Powerpoint « Financial Python&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;8 Aug 2009 8:48 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] I’d almost forgotten since I’ve been using a Mac for a while. Anyway, I ran across this short tutorial on using COM and Python to automate the creation of powerpoint slides. I used COM with excel a [&amp;hellip;]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stef&lt;/strong&gt; &lt;em&gt;17 Jul 2010 7:41 pm&lt;/em&gt;:
Hi,
I have created a program based on the example you showed on this page (creation of ppt slides with txt and images based on info in a CSV file)
It works fine on my PC but when I compile it with py2exe, the prog works on my computer but not on another. Any idea of what I should do so that someone who didn&amp;rsquo;t install ActivePython can use the prog?
Stef&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layne Seely&lt;/strong&gt; &lt;em&gt;2 Feb 2011 5:13 pm&lt;/em&gt;:
I can follow the examples above to open a presentation, however, can you open the presentation to a particular slide?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tom tan&lt;/strong&gt; &lt;em&gt;21 May 2012 1:35 pm&lt;/em&gt;:
Great writing. Helps me to get the hang of office automation with python in general. Thanks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lolla&lt;/strong&gt; &lt;em&gt;2 Dec 2013 12:22 pm&lt;/em&gt;:
How to make this work with arabic text?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chad Kijewski&lt;/strong&gt; &lt;em&gt;25 Jun 2013 10:40 pm&lt;/em&gt;:
Beautiful, thank you for the quick but effective tutorial. I never thought that I&amp;rsquo;d ever be as excited about PowerPoint as I am, but as usual Python can make anything fun.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.twrilla.org&#34;&gt;Roger&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;7 Aug 2013 3:02 pm&lt;/em&gt;:
Just a heads up, you can add notes via the following command:
notes_range = slide.NotesPage.Shapes(2)
notes_range.TextFrame.TextRange.Text = snote
And to use a solid color for a background:
def RGB(r,g,b):
return r*256**2 + g*256 + b
slide_master.Background.Fill.ForeColor.RGB = RGB(256,256,256)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;blerb&lt;/strong&gt; &lt;em&gt;23 Apr 2014 9:12 pm&lt;/em&gt;:
My wife needs a way to easily export all comments (comments, not notes) from a powerpoint, which is not a native feature. I was looking at python-pptx module but it only supports 2.6, 2.7. I don&amp;rsquo;t want to downgrade from 3.
Does win32com have a python3 version and could it be used for this?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zach&lt;/strong&gt; &lt;em&gt;20 Aug 2015 4:59 pm&lt;/em&gt;:
I am very much a beginner with coding in general but am trying to follow along here and am confused on what I am sure is a very basic issue, so bear with me.
At the point where you say, &amp;ldquo;To do this in Python, run Python/Lib/site-packages/win32com/client/makepy.py and pick “Microsoft Office 12.0 Object Library” and “Microsoft PowerPoint 12.0 Object Library”. (If you have a version of Office other than 12.0, pick your version.)&amp;rdquo; I am unable to run this as there is no win32com directory. I am able to import and utilize the win32com.client library just fine (It pulls up PowerPoint and creates slides) but getting the whole MSO and MSPPT part setup is confusing me. Any help or advice is appreciated, thanks!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vasanth&lt;/strong&gt; &lt;em&gt;21 Jul 2016 10:09 am&lt;/em&gt;:
Hi Anand,
I am unable to import MSO &amp;amp; MSPPT. I renamed py files created in gen_py. I am using 2.7.12 64 bit.
ImportError: No module named MSO
Please suggest ?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Afiz&lt;/strong&gt; &lt;em&gt;30 Jan 2016 10:17 am&lt;/em&gt;:
Hi Anand,
Thanks for this wonderful tutorial. I tried to run makepy.py file as you mentioned above, but I didn&amp;rsquo;t see any files getting created after running the file. Could you please tell me , what I might be missing??
Thanks again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sruti&lt;/strong&gt; &lt;em&gt;24 Jul 2017 8:23 am&lt;/em&gt;:
Hi Anand,
I&amp;rsquo;m facing an issue similar to Vasanth&amp;rsquo;s
I&amp;rsquo;m not able to find “Microsoft PowerPoint 12.0 Object Library”. Also I get the error shown below:
for c in dir(PSO.constants): g[c] = getattr(PSO.constants, c)
AttributeError: &amp;lsquo;module&amp;rsquo; object has no attribute &amp;lsquo;constants&amp;rsquo;
Any help here is appreciated. Mine is a 64 bit system using Python 2.7.13 version&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balu&lt;/strong&gt; &lt;em&gt;6 Mar 2016 12:22 pm&lt;/em&gt;:
Hi Anand,
How to add buttons in powerpoint 2013 ribbon through python?
Thanks for the support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.halifa.net&#34;&gt;scratch&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;16 Jan 2017 2:02 am&lt;/em&gt;:
your python is very good ,I benifit from it ,thanks. I am a chinese,my english is not good ,sorry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mj&lt;/strong&gt; &lt;em&gt;10 Mar 2018 12:37 am&lt;/em&gt;:
Why not try &lt;a href=&#34;https://www.pptxbuilder.com&#34;&gt;www.pptxbuilder.com&lt;/a&gt;. Upload your data, customize your data in visual form, then download everything in a powerpoint presentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sailakshmi&lt;/strong&gt; &lt;em&gt;18 Jul 2017 6:39 am&lt;/em&gt;:
Is there any method by which I could automate slideshow using python?&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Office 12</title>
      <link>https://www.s-anand.net/blog/office-12/</link>
      <pubDate>Wed, 14 Sep 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/office-12/</guid>
      <description>&lt;p&gt;A 40-minute &lt;a href=&#34;http://channel9.msdn.com/showpost.aspx?postid=114720&#34;&gt;video preview of Office 12&lt;/a&gt;. I don&amp;rsquo;t normally watch videos this long. But it was worth it.&lt;/p&gt;
&lt;p&gt;Office 12 has a REALLY different user interface (&lt;a href=&#34;http://applexnet.com/index.php?name=News&amp;amp;file=article&amp;amp;sid=1591&#34;&gt;critique&lt;/a&gt;). It&amp;rsquo;s also supposed to have a lot of new features.&lt;/p&gt;
&lt;p&gt;What struck me the most in the video is how Powerpoint creates diagrams. You type text, and Powerpoint can automatically convert that into value chains, org charts, etc. Julie mentions that a blind user was able to create graphics using this feature, and that this was the &lt;strong&gt;first&lt;/strong&gt; time she has been able to create graphics in all her life!&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
