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

投稿日: 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です)

長くなってしまいましたが、宜しくお願いします。


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

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

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