Outlook VBAからExcelブックを開き、その中の特定の列の最終(データが入っている)セルを調べる方法は?


Outlook VBA(Outlook 2010)からExcelブックを開くところまではいきました。
For文を回す回数を決める(空白ではやらない…エラーを回避する)ために特定列の最終セルを調べたいと思います。
ExcelであればRange("A1").End(xlDown).Row(セルA1から順番に下方向にデータが入っている場合※空白はないという前提)で対象の行がわかると思いますが、OutlookからExcelを起動して操作を行おうとすると同様のことが実現できません。
Do…Whileの間にIf文を組み込むということはできるのですが、プログラムコードとしてまったくもってきれいではありません。
どうにかスッキリとしたコードにできないのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2017/01/06 10:08:11

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

こんな感じで行けると思います。

    Set app = CreateObject("Excel.Application")     ' Excel.Application
    Set book = app.Workbooks.Open(...)              ' Workbook
    ' きっと、このあたりまではできているはず
    Set sheet = book.Sheets(1)                      ' Worksheet
    last_row = sheet.Range("A1").End(xlDown).Row    ' Worksheet を指定して操作

Excal VBA で、Range(...) って使うときには、ActiveSheet.Range(...) と
シートの指定を省略している、と考えると良いでしょう。

他3件のコメントを見る
id:keijun5145
  • 4121を設定することで実現できました。

誠にありがとうございます。

ちなみにですが、public xldownで固定値で-4121と宣言してコード内でxldownを使用するのはできないのでしょうか?

2017/01/06 09:47:58
id:keijun5145

できました!!
解決しましたのでBAに選択させていただきます。

2017/01/06 10:08:03
  • id:degucho
    コード提示できますか?
    Excelでできているならできるはずですよ。
    Rangeオブジェクトを完全参照にして
    Workbookオブジェクト.Worksheetオブジェクト.Rangeオブジェクト
    といった感じにできていないのではないでしょうあk

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません