アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAオートフィルターの使い方

情報_test.xlsに存在する氏名をキーワードとして抽出し別のファイルに貼り付ける操作をAutoFilterを使用して実行コードを記述しました。filterまでは機能するようですが、別のファイルに貼り付けるところがうまく機能していないようです。実行させるとエラーにはならず、貼り付け先シートが空白のままになっています。どこに間違いがあるのでしょうか。


Sub Macro14()
'
Application.ScreenUpdating = False
'
Dim jikkou As Integer
Dim mymsg As String
jikkou = MsgBox("このエクセルファイルに集約された情報をもとに担当者毎の入力ファイルを作成します。既存のファイルが更新されます。", vbYesNo)
Select Case jikkou
Case vbYes
'
Workbooks.Open "S:¥情報入力ファイル¥情報_高橋.xls"
ActiveSheet.Unprotect
ActiveSheet.Cells.Clear
'
'オートフィルターで担当者別に情報を抽出しそれぞれのファイルに書き出す
'
Workbooks("情報_test.xls").Worksheets("情報入力").Range("A1").AutoFilter _
field:=14, Criteria1:="高橋"
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Workbooks("情報_高橋.xls").Worksheets("情報").Range("A1")

End Select

End Sub

A 回答 (1件)

Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy~


だと、Range("A1")がWorkbooks("情報_高橋.xls")のシートのA1ということになるらしいので直す。

Workbooks("情報_test.xls").Worksheets("情報入力").Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy


蛇足
このような問題がおきるので下のようにオブジェクトを明示的に確保したほうがよいと思う。

Dim ws_test As Worksheet
Dim wb_Takahashi As Workbook

Set wb_Takahashi = Workbooks.Open("S:¥情報入力ファイル¥情報_高橋.xls")
Set ws_test = Workbooks("情報_test.xls").Worksheets("情報入力")

ws_test.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
wb_Takahashi.Worksheets("情報").Range("A1")

ActiveSheet.Unprotectとかもどれがアクティブなのかよく分からないので明示的に書く。

最後にメモリを開放をしておく
Set ws_test = Nothing
Set wb_Takahashi = Nothing
    • good
    • 0
この回答へのお礼

ご指摘のとおりコードを修正したところうまく動いてくれました。ありがとうございました。

お礼日時:2010/09/05 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!