投稿時間: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です)
長くなってしまいましたが、宜しくお願いします。
|