Outlook VBA(Outlook 2010)からExcelブックを開くところまではいきました。
For文を回す回数を決める(空白ではやらない…エラーを回避する)ために特定列の最終セルを調べたいと思います。
ExcelであればRange("A1").End(xlDown).Row(セルA1から順番に下方向にデータが入っている場合※空白はないという前提)で対象の行がわかると思いますが、OutlookからExcelを起動して操作を行おうとすると同様のことが実現できません。
Do…Whileの間にIf文を組み込むということはできるのですが、プログラムコードとしてまったくもってきれいではありません。
どうにかスッキリとしたコードにできないのでしょうか?
こんな感じで行けると思います。
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(...) と
シートの指定を省略している、と考えると良いでしょう。
Excelでできているならできるはずですよ。
Rangeオブジェクトを完全参照にして
Workbookオブジェクト.Worksheetオブジェクト.Rangeオブジェクト
といった感じにできていないのではないでしょうあk