Officeスクリプトを使って、特定のシートの内容を別のブックにコピーする方法
Excel(Web版)のOfficeスクリプトを使って、
特定のシートの内容を別のブックにコピーして保存することはできますか?
もしPower Automateとの連携が必要であれば、
そちらの知識のある方いましたらご教示いただけますと幸いです。
0
Excel(Web版)のOfficeスクリプトを使って、
特定のシートの内容を別のブックにコピーして保存することはできますか?
もしPower Automateとの連携が必要であれば、
そちらの知識のある方いましたらご教示いただけますと幸いです。
↓これですかね。
@MAAY
Questioner
@nak435 様
いつもお助け頂きありがとうございます。
「ブック内でシートを複製する」というよりは
「特定のシートだけを別のブック(別ファイル)で保存」がしたい、という形なので、少し内容とは異なります…!
失礼しました。
シートを指定して丸ごと他のブックにコピーするという方法はなさそうで、
コピー元、コピー先にそれぞれスクリプトを準備して、それをPower Automateでつなぐやり方になりそうです。
以下でどうでしょうか。
Power Automate のフローを次のように定義します。
script_source
を実行、結果を”変数”に受け取るscript_dest
を実行function main(workbook: ExcelScript.Workbook): SheetInfo {
let selectedSheet = workbook.getActiveWorksheet();
let sheetInfo: SheetInfo = {
name: selectedSheet.getName(),
address: "",
cells: undefined
}
let currentRange = selectedSheet.getUsedRange();
if (currentRange === undefined) { return sheetInfo; }
sheetInfo.address = currentRange.getAddress().split("!")[1];
sheetInfo.cells = currentRange.getValues();
return sheetInfo;
}
function main(workbook: ExcelScript.Workbook, sheetInfo: SheetInfo) {
if (sheetInfo === undefined) { return }
// add new worksheet
let worksheet = workbook.addWorksheet();
worksheet.activate();
let newName = `(${workbook.getWorksheets().length})${sheetInfo.name}`;
worksheet.setName(newName);
if (sheetInfo.address.length == 0) { return }
worksheet.getRange(sheetInfo.address).setValues(sheetInfo.cells);
}
interfaceは共通です。
interface SheetInfo {
name: string;
address: string;
cells: (string | number | boolean)[][];
}
@MAAY
Questioner
@nak435 様
いえいえ、いつもご助言くださりありがとうございます。
なるほど…やはり他のブックにコピーする方法はないんですね…
Power Automateからofficeスクリプトに情報を渡したりスクリプトを作動させたりするやり方は理解ができるのですが、Excelからの実行とつなぐやり方というのが想像できず・・・
いまやりたいのがExcelのシート上に置いたスクリプト実行ボタンを押したら、という起点になるのですが、もしご存じでしたらご教示頂きたいです。
@MAAY
Questioner
@nak435 様
コメントすれ違いになってしまいました!
ありがとうございます!試してみます。