2017-10-25 10 views
1

アクティブなワークシートにテーブル名を取得できません。ワークブックにワークシートが挿入されるドロップダウンがあります。選択したワークシートにすべての列名(ヘッダー)を取得する別のドロップダウンがあります。どういうわけかrange.addressには「sheet1!2:2」があります。ここで現在のワークシートの範囲から行を取得しますか?

function getRow(worksheetName) { 
    Excel.run(function (ctx) { 
      // Queue a command to write the sample data to the worksheet 
      // at moment i have only one worksheet named "Sheet1" 

      var range = ctx.workbook.worksheets.getItem(worksheetName).getRange().getRow(1); 
      range.load('address'); 
      // Run the queued-up commands, and return a promise to indicate task 
      //completion 
      return ctx.sync().then(function() { 
       console.log(range.address); // prints Sheet1!2:2 
      }) 
     }) 
     .catch(errorHandler); 
} 

は、私がテストに使用link to spreadsheet次のとおりです。ここで

は、私が使用したコードです。

私はここで間違っていますか?

+2

は、ワークシート上のテーブルがありますか?あなたのスクリーンショットからは、人口の多い範囲のように見えますが、その範囲のテーブルを作成したかどうかはわかりません。データの範囲を含むすべての範囲が表であるわけではありません。ユーザーがUIを使用するかプログラムによってテーブルを作成する必要があります。 –

+0

@RickKirkham大変申し訳ありませんが、私はちょうど混乱しています。私はスプレッドシートがデフォルトでテーブルを持つべきだと思っていましたが、明らかにこのテーブルを作成しなければなりません。私は質問を更新しました。もう一度ありがとうございました – kero

+1

@kero - 私は、あなたが最初に尋ねたものとはまったく異なる質問であるという(そして、私は以下に答えた)ように、この質問を編集したことに気付きました。このシナリオで*新しい*質問を送信してください(元の質問に既に回答しており、新しい質問が元の質問と完全に異なる場合)。そうすることで、将来このQ/Aスレッドを読む際に、他の人が混乱するのを防ぐことができます。 –

答えて

1

私はここに示したように、あなたが、代わりにgetUsedRange()getRange()を交換することをお勧めしたい:

function getRow(worksheetName) { 
    Excel.run(function (ctx) { 
      var range = ctx.workbook.worksheets.getItem(worksheetName).getUsedRange().getRow(1); 
      range.load('address'); 

      return ctx.sync().then(function() { 
       console.log(range.address); 
      }) 
     }) 
     .catch(errorHandler); 
} 
0

上記のRick Kirkhamのコメントは正しいです。リンクしたファイルにはテーブルオブジェクトがありません。ワークシートには複数の行/列のデータが含まれていますが、そのデータはテーブルに明示的に含まれていません。

このファイルを手動で操作できますか?はいの場合、次のようにしてデータのテーブルオブジェクトを作成できます。

  1. テーブルに入れるデータを選択します。
  2. このデータを選択してテーブルボタン(を挿入)を選択します。
  3. テーブルの入力を確認し、プロンプトを表示し、OKを選択します。

あなたはこのファイルを手動で操作することができない場合、あなたはここで説明するように、オフィスのJavaScript APIを使用して(あなたのワークシートのデータの範囲から)テーブルを作成することができます:https://dev.office.com/docs/add-ins/excel/excel-add-ins-tables#convert-a-range-to-a-table

+0

私は混乱のためご迷惑をおかけしましたが、スプレッドシートにはデフォルトで巨大なテーブルデータが保持されているはずですが、明らかにそうではありません。 – kero

+0

下記の私の追加回答をご覧ください。 –

関連する問題