投稿日 | : 2005/02/28(Mon) 00:34 |
投稿者 | : やばやば |
URL | : |
タイトル | : Re^2: VBからExcelのオートフィルタを設定 |
花ちゃん様返信ありがとうございます。
>> コードを投稿される場合は、実際に使用しているコードをコピー&ペーストして
> 投稿して下さい。書き直したコードでは、本当の事が解りません。
確かにおっしゃるとおりですね。失礼致しました。
--概略--
Excelファイルに既にオートフィルタを設定しています。その先月分のExcelファイルをVBから開けて
日付でフィルタをかけて、その日付のデータ数を取得したいのです。
Public xlsApp As excel.Application
Public xlsBook(1 To 2) As excel.Workbook
Public xlsSheet As excel.Worksheet '.Sheets
Public Const Path As String = "C:\"
Public Const FileNm As String = "DAY.xls"
Public Sub Excel_OPEN() '2005/2/16
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Application.Visible = False
End Sub
Public Sub BOOK_OPEN(ByVal strfile As String, ByVal Index As Integer)
Set xlsBook(Index) = xlsApp.Workbooks.Open(strfile)
End Sub
Public Sub Sheet_OPEN(ByVal SheetNm As String, ByVal Index As Integer)
Set xlsSheet = xlsBook(Index).Worksheets(SheetNm)
End Sub
Private Sub cmdNEW_Click()
Dim F2,F3 as string
Dim YY,MM,DD,zY,zM,zD as integer
Dim eLoop as integer
YY = Year(Date):MM = Month(Date)
DD = Day(Date):zD = 1
If MM = 1 Then
zY = YY - 1
zM = 12
Else
zY = YY
zM = MM - 1
End If
F2 = Path & FileNm & YY & Format(MM, "00") & ".xls"
F3 = Path & FileNm & zY & Format(zM, "00") & ".xls"
'ExcelファイルのOPEN
Call Excel_OPEN
Call BOOK_OPEN(F3, 2)
Call Sheet_OPEN("Sheet1", 2)
With xlsSheet
.Activate
'オートフィルタを設定
'↓(ここでエラーになります)
xlsApp.AutoFilter.Filters(DayCol).Criteria1 = zD
.Cells(1, 1).Select
.Cells(Rows.Count, 1).End(xlUp).Select
eLoop1 = xlsApp.ActiveCell.Row
End With
Call Sheet_CLOSE
Call BOOK_CLOSE(F3, False, 1)
Call Excel_CLOSE
Public Sub Sheet_CLOSE() '2005/2/25
Set xlSheet = Nothing
End Sub
Public Sub BOOK_CLOSE(ByVal strfile As String, ByVal SaveFlg As Boolean, ByVal Index As
Integer)
If SaveFlg Then
xlsBook(Index).Save
Else
xlsBook(Index).Saved = True
End If
xlsBook(Index).Close
xlsApp.Quit
End Sub
Public Sub Excel_CLOSE() '2005/2/16
Set xlsBook(1) = Nothing
Set xlsBook(2) = Nothing
End Sub
エラー内容は「オブジェクトはこのプロパティまたはメソッドをサポートしていません」です。
先ほどの質問で『オートフィルタをどう書いていいのかわからない』と書きましたが、ここなのです。
このサイトのExcelの箇所にもありましたように『VBからExcelのプロパティやメソッド・オブジェクト
等を操作する場合は、必ずオブジェクトを指定します。』この場合、オブジェクトが何になり、
どう指定していいのかわかりません。
> 又、マクロを取ったのならそのマクロも投稿して下さい。
> 中途半端なコードを投稿してもらっても何が解らないのか、どうしたいのか
> 相手に伝わらないかと思いますよ。当然コードを試して見る事もできないし。
下記が、エクセルでのマクロ記録した内容です。
2行目より項目、A列に日付で1日を選択しました
Sub Macro6()
' Macro6 Macro
' マクロ記録日 : 2005/2/28 ユーザー名 :
'
'
Selection.AutoFilter Field:=1, Criteria1:="1"
Range("A2").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Select
End Sub
> エラーがでるならどこでどのようなエラーがでるのか説明しないと。
> 又、参照設定はどのようにしているとかも記入しないと。
> EXCELは2002または2000 どちらなのかも
参照設定はVisual Basic For Application,Visual Basic runtime objects and procedures,Visual
Basic objects and procedures,OLE Automation,Microsoft Excel 10.0 Object Livbrary,Microsoft
ADO Ext.2.8 for DDL and Securityにチェックをつけています。
Excelは2002と2000のどちらとも使っています。(主には2002です)
長くなってしまいましたが、宜しくお願いします。