我希望能够在 Visual Studio Code 中编辑我的 Office 脚本。我知道,我可以将我的脚本从 VS 粘贴并复制到 Office 脚本编辑器,反之亦然。但是,我认为,能够使用 VS 从 OneDrive 直接打开、编辑和保存我的脚本会更舒服。
所以我的问题是,你知道有什么插件或方法可以让 VS 读取 OSTS 文件并在保存回来时重新编码为 JSON 吗?
最好的,穆拉德
在 Excel WebApp (Office 365) 中,可以通过“自动化”选项卡放置 Office 脚本,该选项卡使用 JavaScript 语法,可以像 VBA 宏一样自动执行 Excel,但适用于 Excel WebApp(屏幕截图)。
如何为特定单元格(如单元格:A1)创建事件侦听器?
(一种情况是:如果单元格:A1 的内容/值发生更改,则在单元格:B1 中写入一些内容)
有没有办法在office脚本中调用另一个脚本?一直试图在单个脚本中将其他函数调用到我的主函数中,虽然它确实在调用该函数,但由于某种原因,该函数的条目不会执行,所以我想尝试调用另一个脚本
谢谢
我在 Excel 网页版中使用新的 Office 脚本创建了一个脚本。该脚本只是设置当前工作表中某个范围的填充颜色,获取使用的范围,然后尝试将该范围的地址写入控制台。
async function main(context: Excel.RequestContext) {
let workbook = context.workbook;
let worksheets = workbook.worksheets;
let selectedSheet = worksheets.getActiveWorksheet();
selectedSheet.getRange("B3:E6").format.fill.color = "E2EFDA";
// write used range to console
let usedRange = selectedSheet.getUsedRange();
usedRange.load("address");
context.sync();
console.log("used range = " + usedRange.address);
}
Run Code Online (Sandbox Code Playgroud)
运行此脚本会生成以下错误消息:
The property 'address' is not available. Before reading the property's value, call the load method on the containing object and call "context.sync()" on the associated request context.
似乎我已经按照错误消息指导的建议进行操作 - 即调用方法load来加载address属性,然后 …
我的电子表格中有一个表格,我想删除所有现有数据。我使用下面的代码,除非表格已经为空,否则该代码有效。
// Get the row count
let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
// Delete all the rows
table.deleteRowsAt(0,rowCount);
Run Code Online (Sandbox Code Playgroud)
问题是即使表为空,rowCount 也会返回 1。当deleteRowsAt尝试删除空表中的行时,它会返回错误。
在 VBA 中我们可以使用table.ListRows.Count,如果表为空,这将返回 0。
该表现在没有行,但我无法获得此结果。正如我所说,在 VBA 中我们将使用table.ListRows.Count它,这将返回 0,但我似乎找不到 Office 脚本的等效项。
我对 Office 脚本和脚本实验室感到困惑。
两者都可以javascript在Excel中运行,但似乎代码不能在它们中共享。
对于 Office 脚本,一些代码如
function main(workbook: ExcelScript.Workbook) {
// Set fill color to FFC000 for range Sheet1!A2:C2
let selectedSheet = workbook.getActiveWorksheet();
selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000");
}
Run Code Online (Sandbox Code Playgroud)
对于脚本实验室,代码是
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
sheet.tables.add("B2:E5", true);
await context.sync();
});
Run Code Online (Sandbox Code Playgroud)
的workbook不同之处在于ExcelScript.Workbook和context.workbook
I have been asked to pull data from an Excel online spreadsheet on Sharepoint into Power BI to create a dashboard - no problem, right? Well, one of the 'data points' is actually fill colour of the cell indicating status. I did some googling and managed to write an Office Script that translates the fill colour to the status and got everything to work but I was still running the Office Script manually (and it was taking 3 hours to …
我正在尝试在 Office 脚本中重建一些 VBA 代码,因为我想通过 Microsoft Power Automate(以前的 Flow)自动执行。现在,我的处理数据透视表的代码部分遇到了问题。在 VBA 代码中,我使用:
Dim oWSHilfsPivot As Worksheet
Set oWSHilfsPivot = ActiveWorkbook.Sheets("Hilfs_Pivots")
With oWSHilfsPivot.PivotTables("PivotTable1").PivotFields("Projekt")
.PivotItems("(blank)").Visible = True
End With
Run Code Online (Sandbox Code Playgroud)
如何在 Office 脚本中重建过滤?当我尝试使用集成的 Office 脚本记录器记录它时,我得到:
function main(workbook: ExcelScript.Workbook) {
// Unknown event received with eventId:153
}
Run Code Online (Sandbox Code Playgroud)
因此,默认情况下,Office 脚本似乎还不支持此功能。当然,变量的定义有效,过滤是问题所在。;)
我很感激任何帮助。
我想从 Office 脚本创建一个新的 Excel 工作簿。是否可以创建一个新的工作簿并在 Office 脚本本身中为其指定一个动态名称(日期)?
我想检查一系列单元格是否为空或其中包含任何值,我使用以下命令for loop:
for (let i = 0; i <= namesRange.getCellCount(); i++) {
if (namesRange.getCell(i,0).getText() == "")
{
break;
}
bookedCount += 1;
}
Run Code Online (Sandbox Code Playgroud)
然而,这个迭代非常慢(与 的使用一样Range.getValue,但控制台会警告您迭代.getValue很慢,而不是警告您getText)。迭代一个包含 10 个元素的非常短的列表需要几秒钟的时间。
有没有办法使用 ExcelScript 快速检查单元格的值?
这是否意味着,即使我使用 office.js 和 Node.js 开发 UDF 或功能区加载项,迭代单元格的速度也会非常慢?
有什么办法可以让它更快吗?
我使用以下代码来更新单元格 A1 但它不起作用:
function main(workbook: ExcelScript.Workbook) {
let worksheet = workbook.getWorksheet("Sheet1");
var i: number = 0;
while (true) {
worksheet.getRange("A1").setValue(i);
i = i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
代码运行时什么也没发生。
但是,如果我添加不相关的行
console.log("abc")
Run Code Online (Sandbox Code Playgroud)
在循环的末尾,如下所示:
function main(workbook: ExcelScript.Workbook) {
let worksheet = workbook.getWorksheet("Sheet1");
var i: number = 0;
while (true) {
worksheet.getRange("A1").setValue(i);
i = i + 1;
console.log("abc");
}
}
Run Code Online (Sandbox Code Playgroud)
一切都会顺利进行。
那么,这里到底发生了什么?
office-scripts ×11
excel ×6
javascript ×3
office365 ×3
typescript ×2
microsoft365 ×1
pivot-table ×1
scripting ×1
scriptlab ×1
vba ×1