VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/01/16(Mon) 16:02
投稿者たー
Eメール
URL
タイトルRe^2: (VB6)Excelの行削除


魔界の仮面弁士様

何とか私が思っているように、動くようになりました。
ありがとうございます。

> > 「変数が定義されていません」と表示されてしまいます。
> どの部分で?
「xlUp」の部分が問題あったようでした。

>
>
> > objExcel.Application.Workbooks.Open pstrDATAPATH
>
> その表記は冗長でしょう。
> objExcel と objExcel.Application は同じものを指しますので、
>  objExcel.Workbooks.Open pstrDATAPATH
>  objExcel.Application.Workbooks.Open pstrDATAPATH
>  objExcel.Application.Application.Workbooks.Open pstrDATAPATH
>  objExcel.Application.Application.Application.Workbooks.Open pstrDATAPATH
> はいずれも同じ意味になります。
>
> > For i = 0 To 10000
> 先の pstrDATAPATH や、この i という変数などは、Dim で定義してありますか?
定義済みです。
詳しく記載できていませんでした。
申し訳ありません。

>
>
> > objWS.Rows(CStr(i + 2) & ":" & CStr(i + 2)).Select   'Excel
マクロからコピー
> > objWS.Selection.Delete Shift:=xlUp           'Excelマクロからコピー
> 3点ほど。
>
> 1) ここの xlUp という定数は、Const で定義してありますか?
> 2) Worksheetオブジェクトに Selection というプロパティはありません。
> 3) Select してから、Selection を操作するのは冗長です。
>  直接、Range オブジェクトの Delete メソッドを呼び出すようにしましょう。
objWS.Range(CStr(i + 2) & ":" & CStr(i + 2)).Delete
と修正したところ、私が思っていた通りに動作してくれました。

その他、ご説明頂いた個所に関しては、現状完全には理解できませんでしたので
自分で調査していきたいと思います。
 ※オブジェクト、メソッド、プロパティ等

>
>
> > objExcel.Application.DisplayAlerts = False
> > objExcel.Application.Workbooks.Close
> > objExcel.Application.Quit
> これらも冗長。
>
> > 'Excel開放
> 開放(open)ではなく、解放(free)だと思います。
>
> > Set objExcel = Nothing
> Nothing の代入は無くても大丈夫ですが、もしも書くのであれば、objExcel だけでなく、
> それ以外のすべての使用済みオブジェクト変数に対しても Nothing するべきかと。

'Excel開放
Set objWS = Nothing
Set objWB = Nothing
Set objExcel = Nothing
このように、修正しました。


以上、ありがとうございました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -