IP Library › Granted Patent US 12,619,816
Granted Patent B2
US 12,619,816 · App. 18/453,262 · Granted May 5, 2026

Integrating external program code with spreadsheet application

Inventors: Joseph John McDaid (Seattle, WA); Keyur Patel (Seattle, WA); Arturo Goicochea Hoefken (Seattle, WA); Eoin Burke (Seattle, WA); Su-Piao Wu (Sammamish, WA); James Masson (Seattle, WA); Christopher Gross (Redmond, WA); Jake Elliot Armstrong (Toronto, CA); Carlos Augusto Otero (Seattle, WA); John Herbert Martin Williams (Cambridge, GB); Nicholas Charles Wilson (Cambridge, GB); Andrew Donald Gordon (Cambridge, GB); Neil Toronto (Cambridge, GB); Anders Hejlsberg (Seattle, WA); Guido Van Rossum (Seattle, WA); Shaofeng Zhu (Seattle, WA); Stephen Dower (Cambridge, GB); John Lam (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F40/18
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,619,816
App. No.
18/453,262
Granted
May 5, 2026
Kind
B2
Abstract

A data processing system implements receiving a first input in a spreadsheet in a spreadsheet application, detecting an indication that the first input includes first executable program code, analyzing the first executable program code to identify first references to one or more first elements of the spreadsheet in the first executable program code, requesting spreadsheet data associated with the one or more first elements of the spreadsheet from the spreadsheet application, receiving the spreadsheet data from the spreadsheet application; executing the first executable program code using the spreadsheet data referenced in the first executable program code to obtain a first program code result and causing the spreadsheet application to display the first program code result in the spreadsheet application.

Claims (84)

1 . A data processing system comprising:

a processor; and

a machine-readable storage medium storing executable instructions that, when executed, cause the processor alone or in combination with other processors to perform operations of:

receiving a first input in a spreadsheet in a spreadsheet application;

detecting an indication that the first input includes first executable program code, the first executable program code being associated with a first cell of the spreadsheet application and storing the first executable program code within the spreadsheet by storing the first executable program code in metadata associated with the first cell;

presenting the first executable program code in a code editor panel of a user interface of the spreadsheet application;

detecting a selection of one or more first elements of the spreadsheet in the user interface of the spreadsheet application;

highlighting the one or more first elements of the spreadsheet in the user interface of the spreadsheet application responsive to detecting the selection of the one or more first elements;

automatically updating the first executable program code to include one or more references to the one or more first elements of the spreadsheet responsive to detecting the selection of the one or more first elements to generate updated first executable program code;

presenting the updated first executable program code in the code editor panel of the user interface of the spreadsheet application;

highlighting the one or more references to the one or more first elements in the code editor panel of the user interface of the spreadsheet application;

analyzing the first executable program code to identify first references to one or more first elements of the spreadsheet in the first executable program code;

requesting spreadsheet data associated with the one or more first elements of the spreadsheet from the spreadsheet application;

receiving the spreadsheet data from the spreadsheet application;

executing the first executable program code using the spreadsheet data referenced in the first executable program code to obtain a first program code result;

causing the spreadsheet application to display the first program code result in the spreadsheet application;

monitoring changes to the spreadsheet that affect the one or more first elements of the spreadsheet;

detecting a change to the spreadsheet that updates the first references to the one or more first elements in the spreadsheet;

generating updated references to the one or more first elements based on the change to the spreadsheet; and

automatically updating the first executable program code with the updated references in response to detecting the change the spreadsheet.

2 . The data processing system of claim 1 , wherein the machine-readable storage medium further includes instructions configured to cause the processor alone or in combination with other processors to perform operations of:

causing the spreadsheet application to present the first executable program code in a first editor pane in the spreadsheet application;

detecting a first user input selecting a first reference to the one or more first elements; and

causing the spreadsheet application to highlight the one or more first elements in the spreadsheet in response to detecting the first user input.

3 . The data processing system of claim 2 , wherein the machine-readable storage medium further includes instructions configured to cause the processor alone or in combination with other processors to perform operations of:

detecting a second user input via a first control element of the first editor pane;

configuring the first editor pane and the spreadsheet application to operate in a first editor mode responsive to detecting the second user input, the first editor mode causing the spreadsheet application to monitor user selections of elements within the spreadsheet and to provide references to the user selections to the first editor pane;

detecting a third user input selecting one or more second elements of the spreadsheet;

providing references to the one or more second elements to the first editor pane; and

automatically inserting a representation of the references to the one or more second elements into the first executable program code.

4 . The data processing system of claim 3 , wherein the machine-readable storage medium further includes instructions configured to cause the processor alone or in combination with other processors to perform operations of:

receiving a second input associated with a second cell in the spreadsheet in the spreadsheet application;

detecting the indication that the second input includes second executable program code;

analyzing the second executable program code to identify second references to one or more second elements of the spreadsheet in the second executable program code;

requesting spreadsheet data associated with the one or more second elements of the spreadsheet from the spreadsheet application;

receiving the spreadsheet data from the spreadsheet application;

executing the second executable program code using the spreadsheet data referenced in the second executable program code to obtain a second program code result;

causing the spreadsheet application to store the second program code result in the spreadsheet application; and

causing the spreadsheet application to present the first executable program code in a second editor pane in the spreadsheet application.

5 . The data processing system of claim 4 , wherein the machine-readable storage medium further includes instructions configured to cause the processor alone or in combination with other processors to perform operations of:

causing the spreadsheet application to display a code editor panel, wherein the code editor panel presents the first editor pane associated with the first executable program code and the second editor pane associated with the second executable program code in an order of execution of the first executable program code and the second executable program code.

6 . The data processing system of claim 5 , wherein the machine-readable storage medium further includes instructions configured to cause the processor alone or in combination with other processors to perform operations of:

detecting a third user input via a second control element of the code editor panel;

causing the code editor panel to display a third editor pane for third executable program code;

receiving an indication of a third cell of the spreadsheet to associate with the third executable program code;

receiving third program code via the third editor pane; and

associating the third program code with the third cell of the spreadsheet.

7 . A method implemented in a data processing system for integrating executable program code with a spreadsheet application, the method comprising:

receiving a first input in a spreadsheet in a spreadsheet application;

detecting an indication that the first input includes first executable program code, the first executable program code being associated with a first cell of the spreadsheet application and storing the first executable program code within the spreadsheet by storing the first executable program code in metadata associated with the first cell;

presenting the first executable program code in a code editor panel of a user interface of the spreadsheet application;

detecting a selection of one or more first elements of the spreadsheet in the user interface of the spreadsheet application;

highlighting the one or more first elements of the spreadsheet in the user interface of the spreadsheet application responsive to detecting the selection of the one or more first elements;

automatically updating the first executable program code to include one or more references to the one or more first elements of the spreadsheet responsive to detecting the selection of the one or more first elements to generate updated first executable program code;

presenting the updated first executable program code in the code editor panel of the user interface of the spreadsheet application;

highlighting the one or more references to the one or more first elements in the code editor panel of the user interface of the spreadsheet application;

analyzing the first executable program code to identify first references to one or more first elements of the spreadsheet in the first executable program code;

requesting spreadsheet data associated with the one or more first elements of the spreadsheet from the spreadsheet application;

receiving the spreadsheet data from the spreadsheet application;

executing the first executable program code using the spreadsheet data referenced in the first executable program code to obtain a first program code result;

causing the spreadsheet application to display the first program code result in the spreadsheet application;

monitoring changes to the spreadsheet that affect the one or more first elements of the spreadsheet;

detecting a change to the spreadsheet that updates the first references to the one or more first elements in the spreadsheet;

generating updated references to the one or more first elements based on the change to the spreadsheet; and

automatically updating the first executable program code with the updated references in response to detecting the change the spreadsheet.

8 . The method of claim 7 , further comprising:

causing the spreadsheet application to present the first executable program code in a first editor pane in the spreadsheet application;

detecting a first user input selecting a first reference to the one or more first elements; and

causing the spreadsheet application to highlight the one or more first elements in the spreadsheet in response to detecting the first user input.

9 . The method of claim 8 , further comprising:

detecting a second user input via a first control element of the first editor pane;

configuring the first editor pane and the spreadsheet application to operate in a first editor mode responsive to detecting the second user input, the first editor mode causing the spreadsheet application to monitor user selections of elements within the spreadsheet and to provide references to the user selections to the first editor pane;

detecting a third user input selecting one or more second elements of the spreadsheet;

providing references to the one or more second elements to the first editor pane; and

automatically inserting a representation of the references to the one or more second elements into the first executable program code.

10 . The method of claim 9 , further comprising:

receiving a second input associated with a second cell in the spreadsheet in the spreadsheet application;

detecting the indication that the second input includes second executable program code;

analyzing the second executable program code to identify second references to one or more second elements of the spreadsheet in the second executable program code;

requesting spreadsheet data associated with the one or more second elements of the spreadsheet from the spreadsheet application;

receiving the spreadsheet data from the spreadsheet application;

executing the second executable program code using the spreadsheet data referenced in the second executable program code to obtain a second program code result;

causing the spreadsheet application to store the second program code result in the spreadsheet application; and

causing the spreadsheet application to present the first executable program code in a second editor pane in the spreadsheet application.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NAME OF THE 15 INVENTOR PREVIOUSLY RECORDED AT REEL: 64659 FRAME: 397. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 18, 2024
From: MCDAID, JOSEPH JOHN; PATEL, KEYUR; HOEFKEN, ARTURO GOICOCHEA; BURKE, EOIN; WU, SU-PIAO; GROSS, CHRISTOPHER; ARMSTRONG, JAKE ELLIOT; OTERO, CARLOS AUGUSTO; WILLIAMS, JOHN HERBERT MARTIN; WILSON, NICHOLAS CHARLES; GORDON, ANDREW DONALD; TORONTO, NEIL; HEJLSBERG, ANDERS; ZHU, SHAOFENG; DOWER, STEPHEN; LAM, JOHN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 068356/0007 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2023
From: MASSON, JAMES; VAN ROSSUM, GUIDO
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 065884/0278 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2023
From: MCDAID, JOSEPH JOHN; PATEL, KEYUR; GOICOCHEA HOEFKEN, ARTURO; BURKE, EOIN; WU, SU-PIAO; GROSS, CHRISTOPHER; ARMSTRONG, JAKE ELLIOT; OTERO, CARLOS AUGUSTO; WILLIAMS, JOHN HERBERT MARTIN; WILSON, NICHOLAS CHARLES; GORDON, ANDREW DONALD; TORONTO, NEIL; HEJLSBERG, ANDERS; ZHU, SHAOFENG; DOWER, STEVE; LAM, JOHN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064659/0397 →
Continuity (1)
Related Publication 20250068835A1 · Feb 27, 2025
References Cited (35)
US 9015671B2 · Johnson · 2015 [cited by examiner]
US 9582288B1 · Stewart · 2017 [cited by examiner]
US 9959098B1 · Smith Devine · 2018 [cited by examiner]
US 11086894B1 · Srivastava · 2021 [cited by examiner]
US 11170165B1 · Smith Devine · 2021 [cited by examiner]
US 11194793B1 · Srivastava · 2021 [cited by examiner]
US 11397608B2 · Srinivasan · 2022 [cited by examiner]
US 12039258B2 · Dayal · 2024 [cited by examiner]
US 20080244508A1 · Mantuano · 2008 [cited by examiner]
US 20120054590A1 · Oh · 2012 [cited by examiner]
US 20140380139A1 · Mondri · 2014 [cited by examiner]
US 20150254226A1 · Renshaw · 2015 [cited by examiner]
US 20160173541A1 · Gusain · 2016 [cited by examiner]
US 20170228357A1 · Hirzel · 2017 [cited by examiner]
US 20180157467A1 · Stachura · 2018 [cited by examiner]
US 20190369849A1 · Gonzalez · 2019 [cited by examiner]
US 20200004799A1 · Gross · 2020 [cited by examiner]
US 20200004812A1 · Gross · 2020 [cited by examiner]
US 20200042588A1 · Sagalovskiy · 2020 [cited by examiner]
US 20200248694A1 · Lee · 2020 [cited by examiner]
US 20200285694A1 · Nield · 2020 [cited by applicant]
US 20210357241A1 · Srinivasan · 2021 [cited by examiner]
US 20230088670A1 · Isner · 2023 [cited by examiner]
US 20230251958A1 · Vaquier · 2023 [cited by examiner]
US 20230401039A1 · Mathur · 2023 [cited by examiner]
US 20240012987A1 · Castañeda-Villagrán · 2024 [cited by examiner]
US 20240069988A1 · Patel · 2024 [cited by examiner]
US 20240070383A1 · Patel · 2024 [cited by examiner]
US 20240119229A1 · Fresen · 2024 [cited by examiner]
US 20240303422A1 · Fabian · 2024 [cited by examiner]
US 20250061271A1 · Mcdaid · 2025 [cited by examiner]
“Electron”, Retrieved from: https://www.electronjs.org/?, Retrieved Date: Apr. 21, 2023, 11 Pages. [cited by applicant]
Pamnani, et al., “Microsoft Defender Application Guard overview”, Retrieved from: https://learn.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-application-guard/md-app-guard-overview, May 12, … [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/040653, Dec. 5, 2024, 17 pages. [cited by applicant]
International Preliminary Report on Patentability (Chapter I) received for PCT Application No. PCT/US2024/040653, Mar. 5, 2026, 11 pages. [cited by applicant]