0

この問題の簡単な解決策を探しています。

以下のコードは私の試みですが、ソース ワークブックのフィルタリング部分はそのアプローチで正しいですか?

また、ソースワークブックがフィルタリングおよびコピー時に残っていることを確認したい

アイデアをありがとう!

Sub CopyFilteredValuesToActiveWorkbook()

    Dim sourceValues As Range, targetValues As Range

    Set sourceValues = Workbooks("\\Linkstation\rrm\X_DO_NOT_TOUCH_CC\MasterLogFile\Masterlogfile.xlsx").Worksheets("LogData").Columns("A:Z") 


    ActiveSheet.Range("$A$1:$H$3").AutoFilter Field:=3, Criteria1:="Opera" 


    Set targetValues = Workbooks("\\Linkstation\rrm\Campaign Creator\RAW DATA GENERATOR OPERA.xlsm").Worksheets("MLF").Columns("A:Z")             

    sourceValues.Copy Destination:=targetValues

End Sub
4

1 に答える 1

1

このようなことを試してください-ワークブック/シートを変数として定義すると、すべてを管理するのがはるかに簡単になります。マクロで他のブックを開いてほしいと思いました。そうでない場合は、コードを簡単に変更できます。

Sub CopyFilteredValuesToActiveWorkbook()

Dim wbSource As Workbook, wbDest As Workbook
Dim wsSource As Worksheet, wsDest As Worksheet
Dim rngSource As Range, rngDest As Range

Set wbSource = Workbooks.Open("\\Linkstation\rrm\X_DO_NOT_TOUCH_CC\MasterLogFile\Masterlogfile.xlsx", , True) 'Readonly = True
Set wsSource = wbSource.Worksheets("LogData")
wsSource.Range("$A$1:$H$3").AutoFilter Field:=3, Criteria1:="Opera"
Set rngSource = wsSource.Range("A:Z")

Set wbDest = ThisWorkbook
Set wsDest = wbDest.Worksheets("MLF")
Set rngDest = wsDest.Range("A:Z")

rngDest.Value = rngSource.Value 'Copies values over only, if you need formatting etc we'll need to use something else

wbSource.Close (False) 'Close without saving changes

End Sub
于 2013-01-10T16:40:51.760 に答える