MAAY
@MAAY

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Officeスクリプトを使って、特定のシートの内容を別のブックにコピーする方法

Excel(Web版)のOfficeスクリプトを使って、
特定のシートの内容を別のブックにコピーして保存することはできますか?

もしPower Automateとの連携が必要であれば、
そちらの知識のある方いましたらご教示いただけますと幸いです。

0

1Answer

Comments

  1. @MAAY

    Questioner

    @nak435
    いつもお助け頂きありがとうございます。
    「ブック内でシートを複製する」というよりは
    「特定のシートだけを別のブック(別ファイル)で保存」がしたい、という形なので、少し内容とは異なります…!

  2. 失礼しました。

    シートを指定して丸ごと他のブックにコピーするという方法はなさそうで、

    コピー元、コピー先にそれぞれスクリプトを準備して、それをPower Automateでつなぐやり方になりそうです。

  3. 以下でどうでしょうか。


    Power Automate のフローを次のように定義します。

    1. ”変数”をObject型で定義
    2. コピー元ブックでscript_sourceを実行、結果を”変数”に受け取る
    3. コピー先ブックで、引数に”変数”を指定してscript_destを実行
    script_source
    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;
    }
    
    script_dest
    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
    interface SheetInfo {
        name: string;
        address: string;
        cells: (string | number | boolean)[][];
    }
    
  4. @MAAY

    Questioner

    @nak435
    いえいえ、いつもご助言くださりありがとうございます。
    なるほど…やはり他のブックにコピーする方法はないんですね…

    Power Automateからofficeスクリプトに情報を渡したりスクリプトを作動させたりするやり方は理解ができるのですが、Excelからの実行とつなぐやり方というのが想像できず・・・
    いまやりたいのがExcelのシート上に置いたスクリプト実行ボタンを押したら、という起点になるのですが、もしご存じでしたらご教示頂きたいです。

  5. @MAAY

    Questioner

    @nak435
    コメントすれ違いになってしまいました!
    ありがとうございます!試してみます。

Your answer might help someone💌