← All functions

DDE

Unsupported (not recognized)

Category: Spreadsheet · Last tested 2026-09-01

Real compatibility results for the DDE function: executed in Excel for the web, Google Sheets and LibreOffice Calc, measured against LibreOffice’s published documentation. Excel does not document DDE, so this page makes no claim about Excel. Syntax and links to that documentation are below.

Support matrix

EngineDocumentedLive-testedVerdict
Excel (desktop)No n/a (not an Excel function) n/a
Excel for the web— Yes (recalc, 2026-09-01) Unsupported (not recognized)
Google SheetsNo Yes (Drive import, 2026-09-01) Unsupported (not recognized)
LibreOffice CalcYes Yes (25.8.7.3, 2026-09-01) Inconclusive (no verdict published)

LibreOffice version history

We executed the same test cases under each LibreOffice release to show exactly when DDE’s support changed — not documentation claims, real results.

LibreOffice versionVerdictTested
24.2.0.3 Inconclusive (no verdict published) 2026-09-01
24.8.7.2 Inconclusive (no verdict published) 2026-09-01
25.2.0.3 Inconclusive (no verdict published) 2026-09-01
25.8.7.3 Inconclusive (no verdict published) 2026-09-01

Why isn’t DDE working in Google Sheets?

Google Sheets does not implement DDE: we imported the formula into Sheets on 2026-09-01 and every case came back #NAME? (unrecognized function). Sheets is a rolling service with no version to pin, so this is a statement about the service on that date, and Google’s own function list does not document it either. Rewrite the formula with a documented Sheets equivalent — see the Excel ↔ Sheets equivalents table.

LibreOffice: executed, but no verdict published. DDE resolves a link into another running application — LibreOffice’s own help describes the first argument as “the name of a server application”, and its worked example edits a linked Writer document to change the value. A flat .xlsx carries no such server and a headless conversion has nothing on the other end of the link, so the #N/A recorded below describes the absent server, not LibreOffice. Publishing it as a quirk would assert a defect this run never demonstrated, which is why the executed values are shown and no verdict is drawn from them — the same judgement batch G made about WEBSERVICE’s network #N/A. Every executed case is shown below with the value LibreOffice actually returned.

Executed test cases

Excel for the web (executed 2026-09-01 via OneDrive recalculation)

These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.

FormulaDescriptionResultExpectedVerdict
=DDE("NoSuchDDEServer","NoSuchFile","NoSuchTopic") Existence probe only: DDE resolves a link into another running application, which no flat workbook can supply; this records the engine's no-server result verbatim #NAME?
Provenance

NOT EXECUTABLE AS DOCUMENTED, and deliberately recorded as a probe rather than a support claim -- DDE is RTD's twin and takes RTD's treatment. LibreOffice documents it as "Returns the result of a DDE-based link.", whose first argument "is the name of a server application" ("LibreOffice applications have the server name \"soffice\""), whose second "is the complete file name, including path specification" and whose third "is the area containing the data to be evaluated". Every one of those points outside the workbook: the documented behaviour IS the link to another application's live document, and the help's own example makes that concrete -- edit the text in the linked Writer file and "the motto is updated in all LibreOffice Calc cells in which this DDE link is defined". A .xlsx carries no DDE server, and a headless conversion has no application on the other end of the link, so the documented behaviour cannot be reproduced by this harness in any engine. WHAT THE RUN ACTUALLY RECORDED, VERBATIM: this formula returns #N/A on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3). THAT #N/A IS NOT A LIBREOFFICE DEFECT AND IS NOT PUBLISHED AS ONE. It is what a link to an absent server evaluates to, exactly as batch G refused to let WEBSERVICE's sandbox-DNS #N/A become a 'quirky' verdict; the difference is that WEBSERVICE's obstacle was this sandbox's network while DDE's is intrinsic -- no flat file anywhere has a DDE server behind it. This function's LibreOffice cases are therefore declared unverdictable in site/build_site.py (NO_VERDICT_CASES): the executed values are published exactly as they came back, and the engine's Verdict cell reads Inconclusive rather than a support claim in either direction. THE SERVER NAME IS DELIBERATELY BOGUS. LibreOffice's published examples use the server "soffice" -- naming the running office suite itself. This case does not, because a corpus run must not be able to reach out and start or attach to another process; "NoSuchDDEServer" is well formed, is shaped exactly like the documented syntax DDE("Server"; "File"; "Range" [; Mode]), and cannot connect to anything. STORAGE FORM, MEASURED: unlike the rest of group C3, DDE's readable token is the BARE name. All nine candidate spellings (plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.) were round-tripped through all four builds: the plain name evaluates and every prefixed form is #NAME?, and LibreOffice writes the plain name back out unchanged, so harness/xlfn_map.py deliberately has no entry for DDE. The help's DDE section carries no Technical information block at all -- no namespace sentence and no 'available since' sentence -- which is consistent with a name that never needed one. LibreOffice's Spreadsheet-functions help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. BATCH PROVENANCE (batch J, group C3 of sheets-lo-only-plan.md -- LibreOffice-only and either nondeterministic or context-bound; the final batch of the completeness push). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.)

Error

Google Sheets (executed 2026-09-01 via Drive import)

Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.

FormulaDescriptionResultExpectedVerdict
=DDE("NoSuchDDEServer","NoSuchFile","NoSuchTopic") Existence probe only: DDE resolves a link into another running application, which no flat workbook can supply; this records the engine's no-server result verbatim #NAME?
Provenance

NOT EXECUTABLE AS DOCUMENTED, and deliberately recorded as a probe rather than a support claim -- DDE is RTD's twin and takes RTD's treatment. LibreOffice documents it as "Returns the result of a DDE-based link.", whose first argument "is the name of a server application" ("LibreOffice applications have the server name \"soffice\""), whose second "is the complete file name, including path specification" and whose third "is the area containing the data to be evaluated". Every one of those points outside the workbook: the documented behaviour IS the link to another application's live document, and the help's own example makes that concrete -- edit the text in the linked Writer file and "the motto is updated in all LibreOffice Calc cells in which this DDE link is defined". A .xlsx carries no DDE server, and a headless conversion has no application on the other end of the link, so the documented behaviour cannot be reproduced by this harness in any engine. WHAT THE RUN ACTUALLY RECORDED, VERBATIM: this formula returns #N/A on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3). THAT #N/A IS NOT A LIBREOFFICE DEFECT AND IS NOT PUBLISHED AS ONE. It is what a link to an absent server evaluates to, exactly as batch G refused to let WEBSERVICE's sandbox-DNS #N/A become a 'quirky' verdict; the difference is that WEBSERVICE's obstacle was this sandbox's network while DDE's is intrinsic -- no flat file anywhere has a DDE server behind it. This function's LibreOffice cases are therefore declared unverdictable in site/build_site.py (NO_VERDICT_CASES): the executed values are published exactly as they came back, and the engine's Verdict cell reads Inconclusive rather than a support claim in either direction. THE SERVER NAME IS DELIBERATELY BOGUS. LibreOffice's published examples use the server "soffice" -- naming the running office suite itself. This case does not, because a corpus run must not be able to reach out and start or attach to another process; "NoSuchDDEServer" is well formed, is shaped exactly like the documented syntax DDE("Server"; "File"; "Range" [; Mode]), and cannot connect to anything. STORAGE FORM, MEASURED: unlike the rest of group C3, DDE's readable token is the BARE name. All nine candidate spellings (plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.) were round-tripped through all four builds: the plain name evaluates and every prefixed form is #NAME?, and LibreOffice writes the plain name back out unchanged, so harness/xlfn_map.py deliberately has no entry for DDE. The help's DDE section carries no Technical information block at all -- no namespace sentence and no 'available since' sentence -- which is consistent with a name that never needed one. LibreOffice's Spreadsheet-functions help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. BATCH PROVENANCE (batch J, group C3 of sheets-lo-only-plan.md -- LibreOffice-only and either nondeterministic or context-bound; the final batch of the completeness push). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.)

Error

LibreOffice Calc 25.8.7.3 (tested 2026-09-01)

FormulaDescriptionResultExpectedVerdict
=DDE("NoSuchDDEServer","NoSuchFile","NoSuchTopic") Existence probe only: DDE resolves a link into another running application, which no flat workbook can supply; this records the engine's no-server result verbatim #N/A
Provenance

NOT EXECUTABLE AS DOCUMENTED, and deliberately recorded as a probe rather than a support claim -- DDE is RTD's twin and takes RTD's treatment. LibreOffice documents it as "Returns the result of a DDE-based link.", whose first argument "is the name of a server application" ("LibreOffice applications have the server name \"soffice\""), whose second "is the complete file name, including path specification" and whose third "is the area containing the data to be evaluated". Every one of those points outside the workbook: the documented behaviour IS the link to another application's live document, and the help's own example makes that concrete -- edit the text in the linked Writer file and "the motto is updated in all LibreOffice Calc cells in which this DDE link is defined". A .xlsx carries no DDE server, and a headless conversion has no application on the other end of the link, so the documented behaviour cannot be reproduced by this harness in any engine. WHAT THE RUN ACTUALLY RECORDED, VERBATIM: this formula returns #N/A on all four pinned builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3). THAT #N/A IS NOT A LIBREOFFICE DEFECT AND IS NOT PUBLISHED AS ONE. It is what a link to an absent server evaluates to, exactly as batch G refused to let WEBSERVICE's sandbox-DNS #N/A become a 'quirky' verdict; the difference is that WEBSERVICE's obstacle was this sandbox's network while DDE's is intrinsic -- no flat file anywhere has a DDE server behind it. This function's LibreOffice cases are therefore declared unverdictable in site/build_site.py (NO_VERDICT_CASES): the executed values are published exactly as they came back, and the engine's Verdict cell reads Inconclusive rather than a support claim in either direction. THE SERVER NAME IS DELIBERATELY BOGUS. LibreOffice's published examples use the server "soffice" -- naming the running office suite itself. This case does not, because a corpus run must not be able to reach out and start or attach to another process; "NoSuchDDEServer" is well formed, is shaped exactly like the documented syntax DDE("Server"; "File"; "Range" [; Mode]), and cannot connect to anything. STORAGE FORM, MEASURED: unlike the rest of group C3, DDE's readable token is the BARE name. All nine candidate spellings (plain, _xlfn., COM.MICROSOFT., ORG.OPENOFFICE., _xlfn.ORG.OPENOFFICE., ORG.LIBREOFFICE., _xlfn.ORG.LIBREOFFICE., _xlfn.COM.MICROSOFT. and COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.) were round-tripped through all four builds: the plain name evaluates and every prefixed form is #NAME?, and LibreOffice writes the plain name back out unchanged, so harness/xlfn_map.py deliberately has no entry for DDE. The help's DDE section carries no Technical information block at all -- no namespace sentence and no 'available since' sentence -- which is consistent with a name that never needed one. LibreOffice's Spreadsheet-functions help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. BATCH PROVENANCE (batch J, group C3 of sheets-lo-only-plan.md -- LibreOffice-only and either nondeterministic or context-bound; the final batch of the completeness push). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose -- scripts/check_honesty.py bans the blanket negative shape of that sentence, and the guard is worth keeping blunt.)

Inconclusive

Docs & syntax

Where DDE behaves differently