REGISTER.ID function
The REGISTER.ID function is an Excel add-in function that returns the register ID of a procedure exported by a DLL or code resource, so that other functions such as CALL can invoke it. It depends on native Windows libraries and on the Excel add-in mechanism, which do not exist in a browser or Node.js environment. Jspreadsheet lists the function for compatibility with the Excel catalog, but Jspreadsheet Formulas Pro does not evaluate it. Cells containing it return an error, and the recommended replacement is a custom formula written in JavaScript.
Documentation
Returns the register ID of a DLL or code resource procedure in Excel. Not evaluated by Jspreadsheet.
Category
Add-in and Automation
Syntax
REGISTER.ID(module_text, procedure, [type_text])
| Parameter | Description |
|---|---|
module_text |
The name of the DLL or code resource that contains the procedure. |
procedure |
The name or ordinal number of the procedure inside the DLL. |
[type_text] |
Optional. The text that describes the data types of the return value and of the arguments, as used by Excel add-ins. |
Behavior
In Excel, REGISTER.ID loads a native library and returns a numeric handle. In Jspreadsheet the function is not implemented, so the formula engine treats it as an unknown function.
- Any call to
REGISTER.IDreturns#ERROR!, regardless of the arguments. - The error can be handled with
IFERRORor detected withISERROR, like any other formula error. - Spreadsheets imported from Excel that use
REGISTER.IDorCALLkeep the formula text, but the cells show the error until the formula is replaced. - Jspreadsheet does not load DLLs or code resources. The equivalent extension point is a custom formula registered in JavaScript, which is available to every cell by name.
Common Errors
| Error | Description |
|---|---|
| #ERROR! | Returned for every call, because the function is not evaluated by Jspreadsheet Formulas Pro. |
Best practices
- Replace
REGISTER.IDandCALLwith a custom JavaScript formula. See the custom formulas documentation for how to register one.- When a spreadsheet must stay compatible with Excel, wrap the call with
IFERRORso the Jspreadsheet version shows a fallback value instead of the error.- Search imported files for
REGISTER.IDbefore publishing them, since the error propagates to every formula that depends on the cell.
Usage
A few examples using the REGISTER.ID function.
REGISTER.ID("Kernel32", "GetTickCount", "J")
// Returns #ERROR! in Jspreadsheet
IFERROR(REGISTER.ID("Kernel32", "GetTickCount", "J"), "Not supported")
// Returns "Not supported"
ISERROR(REGISTER.ID("Kernel32", "GetTickCount", "J"))
// Returns TRUE
Interactive Spreadsheet Demo
<html>
<script src="https://jsuites.net/v6/jsuites.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspreadsheet@13/dist/index.min.js"></script>
<link rel="stylesheet" href="https://jsuites.net/v6/jsuites.css" type="text/css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jspreadsheet@13/dist/jspreadsheet.min.css" type="text/css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<script src="https://cdn.jsdelivr.net/npm/@jspreadsheet/formula-pro/dist/index.min.js"></script>
<div id="spreadsheet"></div>
<script>
// You can use the following license for quick testing on localhost, StackBlitz, or CodeSandbox.
// The license is valid for one day, after which the spreadsheet will become read-only.
// For a longer trial period, you can create a free account and generate a demo license with an extended expiration date.
jspreadsheet.setLicense('NzA5NjE0NGU0ZjQ4MDQwNTFhMzAxNDU1ODdhNzY5ZWZhYjRiMDcwYjFjMWQ1Yjk3YzRkMzFmMGRiNTlhMGEzM2E2YzBiYzg0NDg1NjNlYzQ5ZjBlZmI2MzVmNjk0Y2RjMjE5MGNiM2IxZmQwZTJmZTVlYjU5OWMyNjdhNzNlNzYsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpreE1ESTRNekl5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW5ZeE15SXNJbU5vWVhKMGN5SXNJbVp2Y20xeklpd2labTl5YlhWc1lTSXNJbkJoY25ObGNpSXNJbkpsYm1SbGNpSXNJbU52YlcxbGJuUnpJaXdpYVcxd2IzSjBaWElpTENKaVlYSWlMQ0oyWVd4cFpHRjBhVzl1Y3lJc0luTmxZWEpqYUNJc0luQnlhVzUwSWl3aWMyaGxaWFJ6SWl3aVkyeHBaVzUwSWl3aWMyVnlkbVZ5SWl3aWMyaGhjR1Z6SWl3aVptOXliV0YwSWl3aWNHbDJiM1FpWFN3aVpHVnRieUk2ZEhKMVpYMD0=');
// Set the extensions
jspreadsheet.setExtensions({ formula });
// Create a new spreadsheet
jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [
[
"Formula",
"Result"
],
[
"REGISTER.ID",
"=REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\")"
],
[
"With fallback",
"=IFERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"), \"Not supported in Jspreadsheet\")"
],
[
"Is error?",
"=ISERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"))"
]
]
}]
});
</script>
</html>
import React, { useRef } from "react";
import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/react";
import formula from "@jspreadsheet/formula-pro";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
// Set license
jspreadsheet.setLicense('NzA5NjE0NGU0ZjQ4MDQwNTFhMzAxNDU1ODdhNzY5ZWZhYjRiMDcwYjFjMWQ1Yjk3YzRkMzFmMGRiNTlhMGEzM2E2YzBiYzg0NDg1NjNlYzQ5ZjBlZmI2MzVmNjk0Y2RjMjE5MGNiM2IxZmQwZTJmZTVlYjU5OWMyNjdhNzNlNzYsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpreE1ESTRNekl5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW5ZeE15SXNJbU5vWVhKMGN5SXNJbVp2Y20xeklpd2labTl5YlhWc1lTSXNJbkJoY25ObGNpSXNJbkpsYm1SbGNpSXNJbU52YlcxbGJuUnpJaXdpYVcxd2IzSjBaWElpTENKaVlYSWlMQ0oyWVd4cFpHRjBhVzl1Y3lJc0luTmxZWEpqYUNJc0luQnlhVzUwSWl3aWMyaGxaWFJ6SWl3aVkyeHBaVzUwSWl3aWMyVnlkbVZ5SWl3aWMyaGhjR1Z6SWl3aVptOXliV0YwSWl3aWNHbDJiM1FpWFN3aVpHVnRieUk2ZEhKMVpYMD0=');
// Set the extensions
jspreadsheet.setExtensions({ formula });
export default function App() {
// Spreadsheet array of worksheets
const spreadsheet = useRef();
// Worksheet data
const data = [
[
"Formula",
"Result"
],
[
"REGISTER.ID",
"=REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\")"
],
[
"With fallback",
"=IFERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"), \"Not supported in Jspreadsheet\")"
],
[
"Is error?",
"=ISERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"))"
]
];
// Render component
return (
<Spreadsheet ref={spreadsheet}>
<Worksheet data={data} />
</Spreadsheet>
);
}
<template>
<Spreadsheet ref="spreadsheet">
<Worksheet :data="data" />
</Spreadsheet>
</template>
<script>
import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/vue";
import "jsuites/dist/jsuites.css";
import "jspreadsheet/dist/jspreadsheet.css";
import formula from "@jspreadsheet/formula-pro";
// Set license
jspreadsheet.setLicense('NzA5NjE0NGU0ZjQ4MDQwNTFhMzAxNDU1ODdhNzY5ZWZhYjRiMDcwYjFjMWQ1Yjk3YzRkMzFmMGRiNTlhMGEzM2E2YzBiYzg0NDg1NjNlYzQ5ZjBlZmI2MzVmNjk0Y2RjMjE5MGNiM2IxZmQwZTJmZTVlYjU5OWMyNjdhNzNlNzYsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpreE1ESTRNekl5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW5ZeE15SXNJbU5vWVhKMGN5SXNJbVp2Y20xeklpd2labTl5YlhWc1lTSXNJbkJoY25ObGNpSXNJbkpsYm1SbGNpSXNJbU52YlcxbGJuUnpJaXdpYVcxd2IzSjBaWElpTENKaVlYSWlMQ0oyWVd4cFpHRjBhVzl1Y3lJc0luTmxZWEpqYUNJc0luQnlhVzUwSWl3aWMyaGxaWFJ6SWl3aVkyeHBaVzUwSWl3aWMyVnlkbVZ5SWl3aWMyaGhjR1Z6SWl3aVptOXliV0YwSWl3aWNHbDJiM1FpWFN3aVpHVnRieUk2ZEhKMVpYMD0=');
// Set the extensions
jspreadsheet.setExtensions({ formula });
export default {
components: {
Spreadsheet,
Worksheet,
},
data() {
// Worksheet data
const data = [
[
"Formula",
"Result"
],
[
"REGISTER.ID",
"=REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\")"
],
[
"With fallback",
"=IFERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"), \"Not supported in Jspreadsheet\")"
],
[
"Is error?",
"=ISERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"))"
]
]
return {
data
};
}
}
</script>
import { Component, ViewChild, ElementRef } from "@angular/core";
import jspreadsheet from "jspreadsheet";
import formula from "@jspreadsheet/formula-pro";
// You can use the following license for quick testing on localhost, StackBlitz, or CodeSandbox.
// The license is valid for one day, after which the spreadsheet will become read-only.
// For a longer trial period, you can create a free account and generate a demo license with an extended expiration date.
jspreadsheet.setLicense('NzA5NjE0NGU0ZjQ4MDQwNTFhMzAxNDU1ODdhNzY5ZWZhYjRiMDcwYjFjMWQ1Yjk3YzRkMzFmMGRiNTlhMGEzM2E2YzBiYzg0NDg1NjNlYzQ5ZjBlZmI2MzVmNjk0Y2RjMjE5MGNiM2IxZmQwZTJmZTVlYjU5OWMyNjdhNzNlNzYsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpreE1ESTRNekl5TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0luWXhNaUlzSW5ZeE15SXNJbU5vWVhKMGN5SXNJbVp2Y20xeklpd2labTl5YlhWc1lTSXNJbkJoY25ObGNpSXNJbkpsYm1SbGNpSXNJbU52YlcxbGJuUnpJaXdpYVcxd2IzSjBaWElpTENKaVlYSWlMQ0oyWVd4cFpHRjBhVzl1Y3lJc0luTmxZWEpqYUNJc0luQnlhVzUwSWl3aWMyaGxaWFJ6SWl3aVkyeHBaVzUwSWl3aWMyVnlkbVZ5SWl3aWMyaGhjR1Z6SWl3aVptOXliV0YwSWl3aWNHbDJiM1FpWFN3aVpHVnRieUk2ZEhKMVpYMD0=');
// Set the extensions
jspreadsheet.setExtensions({ formula });
@Component({
standalone: true,
selector: "app-root",
template: `<div #spreadsheet></div>`
})
export class AppComponent {
@ViewChild("spreadsheet") spreadsheet: ElementRef;
// Worksheets
worksheets: jspreadsheet.worksheetInstance[];
// Create a new data grid
ngAfterViewInit() {
// Create spreadsheet
this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, {
worksheets: [{
data: [
[
"Formula",
"Result"
],
[
"REGISTER.ID",
"=REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\")"
],
[
"With fallback",
"=IFERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"), \"Not supported in Jspreadsheet\")"
],
[
"Is error?",
"=ISERROR(REGISTER.ID(\"Kernel32\", \"GetTickCount\", \"J\"))"
]
]
}]
});
}
}