2017-03-22 12 views
0

私は本当にシンプルなマクロでなければならないと思ったものを作成しようとしています。私は同じレポートを毎日扱い、毎朝更新されます。それは、私が昨日と同じワークブックで、午前中の新しいデータと同じデータを持つことができて本当にうれしいです。ファイルブラウザを使用して選択したブックからExcel VBAを使用してワークシートをコピーするにはどうすればよいですか?

基本的に、別のブック(昨日のレポートのもの)のワークシートを、ファイルブラウザを使用してアクティブブック(今日のレポートのもの)にコピーするだけです。

Application.GetOpenFilenameメソッドは、私が望むようなファイルブラウザを開きますが、必要なワークシートでコピーするために返すディレクトリ文字列を使用する方法を理解できません。誰もが、私はそれを本当に感謝し、私はここで間違ってやっているものを私に伝えることができれば

Sub Macro5() 

Dim todayWBName As String 
Dim yesterdayWB As Workbook 
Set todayWB = ActiveWorkbook 
todayWBName = todayWB.Name 

'open file from last business day 
    yesterdayWBName = Application.GetOpenFilename(_ 
         Title:="Select backorder file from last business day", _ 
         MultiSelect:=False) 
    If yesterdayWBName = False Then 
     Exit Sub 
    Else 
     End If 
    Workbooks.Open yesterdayWBName 
    Set yesterdayWB = ActiveWorkbook 
    todayWB.Activate 

'copy in yesterday's info 
    yesterdayWB(1).Copy After:=todayWB.Sheets(1) 
    yesterdayWB.Close 
    Sheets("Sheet 1 (2)").Name = "YesterdayResolution" 
    Sheets(1).Activate 

End Sub 

を:ここで

は、私が使用してきたコードです。

ありがとうございます。

答えて

1

これを試してください。 GetOpenFileNameの文字列結果を使用して、オブジェクトに割り当てられたオブジェクト(ワークブック)として戻り値を処理して、Workbooks.Openメソッドに直接渡します。

また、あなたがエラーを持っている:

yesterdayWB(1).Copy After:=todayWB.Sheets(1) 

ワークブックオブジェクトは、あなたが(と思う)yesterdayWB.Worksheets(1).Copy ...

Sub Macro5() 

    Dim yesterdayWB As Workbook 
    Dim yesterdayWBName As String 
    Dim todayWB As Workbook 

    Set todayWB = ActiveWorkbook 

    'open file from last business day 
    yesterdayWBName = Application.GetOpenFilename(_ 
         Title:="Select backorder file from last business day", _ 
         MultiSelect:=False) 
    If yesterdayWBName = False Then 
     Exit Sub 
    End If 
    Set yesterdayWB = Workbooks.Open(yesterdayWBName) 

    'copy in yesterday's info 
    yesterdayWB.Worksheets(1).Copy After:=todayWB.Sheets(1) 
    yesterdayWB.Close 
    ' the sheet you copied is at index "2" because you put it after Sheets(1) 
    todayWB.Sheets(2).Name = "YesterdayResolution" 
    todayWB.Sheets(1).Activate 

End Sub 
だった何を意味するのか、添字化ではありません
関連する問題