xldown等が使用できない

解決


KARAKURI  2007-12-01 01:35:01  No: 138261

この様な記述をした場合、

        Dim xlApp As New Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim i As Integer
        Dim sCount As Integer

        For sCount = 0 To pCount - 1
            '     レコード分だけ行追加
            xlSheet.Rows(i & ":" & i).Select()
            xlSheet.Copy()
            xlSheet.Selection.insert(Shift:=xlDown)
        Next sCount

エラー文・・・xlDownは宣言されていないと表示されます。

お手数おかけしますが、御回答お願いします。


KARAKURI  2007-12-01 01:40:58  No: 138262

※付け足し

参照設定もExcelとOfficeを設定しています。

xldown,xlup,xlleft,xlright共に使用できません。


魔界の仮面弁士  2007-12-01 05:14:23  No: 138263

> xlSheet.Selection.insert(Shift:=xlDown)

括弧付きで呼んでいるという事は、このコードは VB.NET ですね。

だとしたら、
  xlDown
ではなく、
  Excel.XlDirection.xlDown
と書く必要があります。

ただ、Range.Insert メソッドで使うのであれば、xlDown ではなく、
xlShiftDown の方を使うべきです。

Excel の「マクロの記録」では、旧形式の xlDown が記録されますし、
値は同じなので、結果に違いはありませんが、正しくは Excel ヘルプに
あるように、 Excel.XlInsertShiftDirection.xlShiftDown であるべき場所です。

もう一つ。「オブジェクトの解放処理」が抜けおちているようです。

.NET から Excel 操作を行っているだとしたら、明示的な解放処理も必要です。
google 等で、『Marshal.ReleaseComObject   Excel』というキーワードで
検索すると、解放処理の方法がわかるかと。


KARAKURI  2007-12-01 18:45:34  No: 138264

魔界の仮面弁士様
ご対応ありがとうございました。
感激いたしました。
オブジェクトの開放処理についても、
調査を行わせていただきます。

本当にありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加