2016-07-18 6 views
0

これは私の仕事でマクロを書く最初の試みです。これは本当にシンプルなのですが、私は解決策をオンラインで見つけることができず、私のコードで:異なるワークブックを切り替えて情報をコピー/ペーストする方法

基本的に、私は生データファイルがあり、私は新しいブックに別のフィルタリングされたデータをコピーしたいと思います。すでに作成したワークブックに列Mをコピーする部分を渡しますが、コードをRaw Dataファイルに戻して別の列をコピーし、それを同じ新しいブックの別の列に貼り付ける方法がわかりません。

これまで私がこれまで持っていたのは、 '' 'の行は私が試したものであり、エラーを受けたものです。それは最後の行は、ちょうど私が戻って生データファイルへ行くしようとしている

Dim FilePath As String 
Dim SourceFile As String 

Sub Reconcile() 

FilePath = Sheets("Reconcile").Range("E5")  'location of saved attachment 
If Right(FilePath, 1) <> "\" Then FilePath = FilePath & "\" 

SourceFile = Sheets("Reconcile").Range("E7") 'name of attachment file 

FilePath = FilePath & SourceFile 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 

Workbooks.Open Filename:=FilePath, UpdateLinks:=False 'open sourcefile  workbook 
ActiveWorkbook.CheckCompatibility = False 

'''Set DataFile = Workbooks(ActiveWorkbook.Name) 'activeworkbook is the raw data file 

'Copy the date column into a new wb and remove duplicates 
    Columns("M:M").Select 
    Selection.Copy 
    Workbooks.Add 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    ActiveSheet.Range("$A$1:$A$1666").RemoveDuplicates Columns:=1, Header:=xlNo 
    Rows(1).Delete 

'''DataFile.Sheets("Sheet1").Range("A1").Select 


End Sub 

作業とセルA1を選択していない理由はわかりません。

ありがとうございます!

答えて

1

は、ワークシートオブジェクトとワークブックのカップルを作成することから始め、あなたがどんな新しいワークブックを開く前に、あなたのリコンサイルシートにwsReconcileを設定し、あなたのコードの開始時に、次に

Dim wsReconcile As Worksheet 
Dim wbDatafile As Workbook 
Dim wbNewfile As Workbook 

オブジェクト

Set wsReconcile = Worksheets("Reconcile") 

あなたは、データ・ファイルのあなたのWorkBooks.Openを行うときに、あなたがwbDatafileオブジェクトに

Set wbDatafile = Workbooks.Open(Filename:=FilePath, UpdateLinks:=False) 'open sourcefile  workbook 
を割り当てることができますあなたがあなたの新しいブックを追加するとき、wbDatafileオブジェクトを使用し、

Set wbNewfile = Workbooks.Add 

その後wbNewfileオブジェクトに使用すると、データファイルを参照する必要があるたびに、それを割り当てる

そして、例えば

wbDatafile.Sheets("Sheet1").Range("A1").Select 

新しいファイルを参照するたびに、次のようなwbNewfileオブジェクトを使用します。

wbNewfile.Sheets("Sheet1").Range("$A$1:$A$1666").RemoveDuplicates Columns:=1, Header:=xlNo 
wbNewfile.Sheets("Sheet1").Rows(1).Delete 

オリジナルのリコンサイルシートを参照する場合は、wsReconcileオブジェクトを使用することができます。

SourceFile = wsReconcile.Range("E7") 
+0

「に設定wbDatafile = Workbooks.Openファイル名:=ファイルパスは、UpdateLinks:= Falseの「オープンソースファイル名」この行は私のために動作しませんでしたが、私は、「設定wbDatafile =ワークブック(ActiveWorkbook.Nameを使用して同じ結果を得ました) " あなたの手順をとても分かりやすく説明してくれてありがとう! –

+0

@ S.Kat - それはタイプミスです - パラメータの前後にかっこを入れるのを忘れてしまいました。私は誰も混乱しないように答えを編集します。 – YowE3K

+0

@ S.Kat P.S. 'Set wbDatafile = Workbooks(ActiveWorkbook.Name)'は 'Set wbDatafile = ActiveWorkbook'に相当します – YowE3K

関連する問題