NetOffice icon indicating copy to clipboard operation
NetOffice copied to clipboard

Implement Presentation.AutoSaveOn property in PowerPointApi

Open kev-is-coding-for-adn opened this issue 9 months ago • 6 comments

Add AutoSaveOn property in PowerPoint Api

kev-is-coding-for-adn avatar Apr 14 '25 11:04 kev-is-coding-for-adn

Does this implementation work for you?

jozefizso avatar Apr 14 '25 17:04 jozefizso

In fact, it appears this property is not accessible through API. It's only a VBA helper to deactivate AutoSave. I didn't find a way to access it another way. Too bad.

kev-is-coding-for-adn avatar Apr 15 '25 05:04 kev-is-coding-for-adn

Weird, this property exists in Excel and it works.

All the stuff from VBA model exists in COM objects too.

I can check if it's exposed on Mac.

jozefizso avatar Apr 15 '25 07:04 jozefizso

Let me know if it works for you. I trully would need this property to be available! Thanks

kev-is-coding-for-adn avatar Apr 15 '25 08:04 kev-is-coding-for-adn

Here are all the members of the Presentation object in PowerPoint on Mac 16.95.4.

The AutoSaveOn property exists there.

Member SaveCopyAs2: 2135 -1 -1 (0x600000d38c28)
Member Redo: 2134 -1 -1 (0x600000d38da8)
Member Undo: 2133 -1 -1 (0x6000008b09a8)
Member AutoSaveOn: -1 2129 2129 (0x600000a6bfe8)
Member IsProtected: -1 2131 -1 (0x600000a6bfa8)
Member SectionProperties: -1 2111 -1 (0x600000a6bf28)
Member SnapToGrid: -1 2061 2061 (0x600000d38e68)
Member ApplyTheme: 2105 -1 -1 (0x600000a6bea8)
Member ReadOnlyRecommended: -1 2136 -1 (0x600000d38f28)
Member sectionTitle: 2093 -1 -1 (0x600000a6bda8)
Member DeleteSection: 2091 -1 -1 (0x600000a6bd28)
Member NewSectionAfter: 2090 -1 -1 (0x600000a6bce8)
Member HasSections: -1 2089 -1 (0x600000a6bca8)
Member SectionCount: -1 2088 -1 (0x600000a6bc68)
Member Guides: -1 2127 -1 (0x600000d15a68)
Member Password: -1 2080 2080 (0x600000a6bbe8)
Member WritePassword: -1 2081 2081 (0x600000a6bc28)
Member RemoveBaseline: 2074 -1 -1 (0x600000a6bba8)
Member AddBaseline: 2073 -1 -1 (0x600000a6bb68)
Member HasRevisionInfo: -1 2072 -1 (0x600000a6bb28)
Member WebOptions: -1 2053 -1 (0x600000a6ba28)
Member SlideShowWindow: -1 2047 -1 (0x600000a6b9e8)
Member CheckInWithVersion: 2095 -1 -1 (0x600000a6be68)
Member NoLineBreakAfter: -1 2045 2045 (0x600000a6b968)
Member CustomerData: -1 2106 -1 (0x600000a6bee8)
Member DisplayComments: -1 2042 2042 (0x600000a6b8a8)
Member Export: 2038 -1 -1 (0x600000a6b7a8)
Member FullName: -1 2024 -1 (0x600000a01ce8)
Member SaveAs: 2036 -1 -1 (0x600000a6b728)
Member PrintOut: 2034 -1 -1 (0x600000a6b6a8)
Member GridDistance: -1 2062 2062 (0x600000d154e8)
Member PrintOptions: -1 2033 -1 (0x600000a6b628)
Member CheckIn: 2065 -1 -1 (0x600000a6baa8)
Member Unused: 2032 -1 -1 (0x600000a6b568)
Member Broadcast: -1 2118 -1 (0x600000a6bf68)
Member NewWindow: 2029 -1 -1 (0x600000a01e28)
Member LayoutDirection: -1 2028 2028 (0x600000a01de8)
Member ReadOnly: -1 2023 -1 (0x600000a01ca8)
Member CustomDocumentProperties: -1 2021 -1 (0x600000a01c28)
Member AddRef: 1610612737 -1 -1 (0x600000a01528)
Member FollowHyperlink: 2030 -1 -1 (0x600000a6b5a8)
Member HasTitleMaster: -1 2005 -1 (0x600000a017a8)
Member BuiltInDocumentProperties: -1 2020 -1 (0x600000a01ba8)
Member DefaultShape: -1 2019 -1 (0x600000a01b28)
Member CanCheckIn: 2066 -1 -1 (0x600000a6bae8)
Member Windows: -1 2017 -1 (0x600000a01aa8)
Member SaveAsMovieSettings: -1 2132 -1 (0x6000008b08e8)
Member Save: 2035 -1 -1 (0x600000a6b6e8)
Member QueryInterface: 1610612736 -1 -1 (0x600000a01368)
Member HandoutMaster: -1 2010 -1 (0x600000a018e8)
Member SlideShowSettings: -1 2015 -1 (0x600000a01a28)
Member Close: 2039 -1 -1 (0x600000a6b7e8)
Member Application: -1 2001 -1 (0x600000a016a8)
Member ExtraColors: -1 2014 -1 (0x600000a019e8)
Member GetTypeInfoCount: 1610678272 -1 -1 (0x600000a013e8)
Member RemoveDocumentInformation: 2094 -1 -1 (0x600000a6be28)
Member SlideMaster: -1 2003 -1 (0x600000a01728)
Member NotesMaster: -1 2009 -1 (0x600000a018a8)
Member Slides: -1 2011 -1 (0x600000a01928)
Member Container: -1 2041 -1 (0x600000a6b868)
Member Tags: -1 2018 -1 (0x600000a01ae8)
Member NoLineBreakBefore: -1 2044 2044 (0x600000a6b928)
Member TemplateName: -1 2008 -1 (0x600000a01868)
Member ApplyTemplate: 2007 -1 -1 (0x600000a01828)
Member Saved: -1 2027 2027 (0x600000a01da8)
Member AddTitleMaster: 2006 -1 -1 (0x600000a017e8)
Member Fonts: -1 2016 -1 (0x600000a01a68)
Member IsFullyDownloaded: -1 2137 -1 (0x600000d395a8)
Member TitleMaster: -1 2004 -1 (0x600000a01768)
Member RemoteInvoke: 1610678275 -1 -1 (0x600000a01668)
Member SetUndoText: 2040 -1 -1 (0x600000a6b828)
Member SaveCopyAs: 2037 -1 -1 (0x600000a6b768)
Member Name: -1 2025 -1 (0x600000a01d28)
Member GetTypeInfo: 1610678273 -1 -1 (0x600000a01568)
Member DisableSections: 2092 -1 -1 (0x600000a6bd68)
Member FarEastLineBreakLevel: -1 2043 2043 (0x600000a6b8e8)
Member ColorSchemes: -1 2013 -1 (0x600000a019a8)
Member GetIDsOfNames: 1610678274 -1 -1 (0x600000a01628)
Member UpdateLinks: 2046 -1 -1 (0x600000a6b9a8)
Member Parent: -1 2002 -1 (0x600000a016e8)
Member Path: -1 2026 -1 (0x600000a01d68)
Member PageSetup: -1 2012 -1 (0x600000a01968)
Member VBProject: -1 2022 -1 (0x600000a01c68)
Member Designs: -1 2063 -1 (0x600000a6ba68)
Member Release: 1610612738 -1 -1 (0x600000a014a8)

jozefizso avatar Apr 15 '25 10:04 jozefizso

So you mean it should work ? Here is the code I tried to use to get this property for a presentation I know has the "auto save" property on. But this code always return false.

public static bool IsAutoSaveOn(this Presentation pres)
        {
            try
            {
                return pres.Factory.ExecuteBoolPropertyGet(pres, "AutoSaveOn");
            }
            catch (Exception)
            {
                return false;
            }
        }

kev-is-coding-for-adn avatar Apr 15 '25 10:04 kev-is-coding-for-adn

The ActivePresentation.AutoSaveOn property does work correctly from the VBA macro project.

Screenshot 2025-11-01 at 13 18 50

In rare cases some of the PowerPoint object model members are accessible only using the dispatch ID (DispId) call and not using the member name.

jozefizso avatar Nov 01 '25 12:11 jozefizso

@kev-is-coding-for-adn This implementation is correct. The AutoSaveOn property reports correct value when I open a presentation stored on OneDrive.

Screenshot 2025-11-02 125412

jozefizso avatar Nov 02 '25 12:11 jozefizso

@kev-is-coding-for-adn This change is good the v1.9.8 release.

  1. I will merge this change to main branch
  2. I will create new PR to cherry-pick this change to the releases/netoffice_v1.9.8 branch

jozefizso avatar Nov 02 '25 21:11 jozefizso