• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Workbook)

ExcelのWorkbookでプログラムを開く方法

このQ&Aのポイント
  • ExcelのWorkbookでプログラムを開く方法について教えてください。
  • ExcelのWorkbookで次のプログラムを開く手順を教えてください。
  • ExcelのWorkbookでプログラムを開く方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sppla
  • ベストアンサー率51% (185/360)
回答No.1

動作検証までするのは面倒なのでとっかかりを軽く説明だけします。 ここまでコードをかけるならExcel VBAのヘルプで自分である程度調べることもできると思いますし。 (昔Excel VBAを書いた時の知識ですが、今もまだ通用すると思います) Excelの場合にはオブジェクトの階層が Workbook ⇒ WorkSheet ⇒ RangeやCell のような階層となっています。 「Xrange = Range("A1:T20")」のようにいきなりRangeオブジェクトを操作するのではなく、その前にどこのWorkbookであるか?どこのWorkSheetであるかを指示してやる必要があります。 そのためRangeを操作する前にWorkbook、Worksheetを例えば下記のように指定します。 Dim ws As Excel.Worksheet Set ws = ThisWorkbook.Worksheets("SHEET_A") ws.Range("A1", "D4").Clear この例で現在のワークブック(ThisWorkbook)の中のシート「SHEET_A」のセル範囲(Range)A1~D4の内容を消去するケースです。 Workbookは書き方によっては別ファイルを指定することも当然できます。(これで私は各社員から提出させたExcelワークブックの集計などを行っています) 後は Dim Xrange As Variant となっていますが、Xrange(I, J) = "■" のように使っているところを見ると、これはExcelの特定のセルを操作しようとしているのですよね? その場合にはRangeオブジェクトよりCellオブジェクトにした方がいいと思います。 CellオブジェクトはCell(y,x)のような感じでx,yに数値を入れて特定のセルを指示します。 (この辺りヘルプで確認していただきたいですが、私のうろ覚えの記憶ではy座標が先だった気がします。また添え字が0で始まっているか1で始まっているかは覚えていません・・・私もテストの際に確認しながらやることが多いです) Cellを操作するなら、先ほどのコードでワークシートを定義してあれば、たぶん ws.Cell(y,x) = "■" のような感じで使えると思います。 (もしくは ws.Cell(y,x).value = "■" だったかも・・・) Office系のVBAではオブジェクト同士の階層構造がポイントになります。ヒントになれば幸いです。

wish33
質問者

お礼

詳しく教えていただきありがとうございました。 とても参考になりました。

その他の回答 (1)

  • sppla
  • ベストアンサー率51% (185/360)
回答No.2

No1です。 少し訂正です。 今日たまたま職場でExcel VBAのプログラムを書いたのですが Cell(y,x) ではなく Cells(y,x) が正しいです。