解決済

clip!clip!
Ads By Google

HTML ApplicationからExcelを操作したいのですがどうにもうまく出来ないところがあります。

Excelを開きxlUPにて最終行を取得したいのですが何故か結果が返ってきません。
定数の宣言はちゃんと行っていますし、アクティブシートにしないと出来ないということもわかっているのですがどうにもこうにも動いてくれません・・・どうしたらよいのでしょうか?
       objExcelPath = "D:\レコード書き込みテスト.xls" 

           Set g_objExcelApp = GetObject(,"Excel.Application") 
               If Err Then 
                   Set objExcelApp = CreateObject("Excel.Application") 
                       objExcelApp.Visible = True 
                       objExcelApp.WorkBooks.Open objExcelPath 
               ElseIf g_objExcelApp.Workbooks.Count Then 
                   For Each i In g_objExcelApp.Workbooks 
                       If i.FullName = objExcelPath Then 
                           MsgBox objExcelPath & "が開いているので書き込めません。" & vbCrLf & vbCrLf & _ 
                                               "保存して終了してください。", vbCritical, "警告" 
                           Exit Sub 
                       End If 
                   Next 
               Else 
                   MsgBox "Excelは起動していますが" & objExcelPath & "を開いてないので開きます。" 
                   Set objExcelApp = CreateObject("Excel.Application") 
                       objExcelApp.Visible = True 
                       objExcelApp.WorkBooks.Open objExcelPath 
               End If 

           objExcelApp.WorkSheets("1nosheet").Activate 
           Set objExcelSheet = objExcelApp.WorkSheets("1nosheet") 

           RowNo = objExcelSheet.ActiveSheet.Range("J65536").End(xlUP).Row 
WScript.echo RowNo
'RowNoが出ないのは何故でしょうか??

2009-02-15 00:19の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。

回答(1)

1.

2009-02-15 04:09:40ベスト
とりあえず、エラーが発生した時の処理は、このようには書けません。


存在するファイルのJ列の最後の行番号を得る例:
Const xlUP=-4162
ExcelFilePath = "D:\レコード書き込みテスト.xls" 

Set Excel = GetObject(ExcelFilePath) 
Set book  = Excel.Application.Workbooks(1)
Set Sheet = book.WorkSheets("1nosheet")

RowNo = Sheet.Range("J65536").End(xlUP).Row
WScript.Echo(RowNo)

Set Sheet = Nothing
Set book  = Nothing
Set Excel = Nothing

Workbooks を使う時には、Application を省略しないで下さい。
このようなスクリプトからシート名を指定して実行する場合は特にアクティブシートにする必要はありません。
回答レベル : アドバイス

ありがとうございました。
なぜ出来ない出来ない???とテストしてみていましたがOn Error・・・を宣言しっぱなしでエラーが見つけられない状態でした。
おかげさまで行番号取得できました。有難うございました

Ads By Google

コメント(2)

#1.  BLUEPIXY
2009-02-15 18:07:30

>>1
On Error は、書いてあったのですね。
失礼しました。

まず、動作できる部分を構築して(そこをコミットポイントとして)発展的にプログラムを作成するといいんじゃないかと思います。

昔は、Application は、省略できたように思うのですが・・

#2.  mr-r00
2009-02-15 23:44:50

いえいえ本当にありがとうございました。
On Errorをプログラムからコピーし忘れた私がいけなかったので・・
段々と形になりつつあります。
ありがとうございました

トラックバック(2)

トラックバックURL: