2017-02-13 4 views
0

良い一日のすべてにコピーするワークシート:エクセル:別のブック(既存または新規のか)

私は別のファイルにExcelワークシートをコピーするためのActiveXコマンドボタンを使用しようとしています。背景は次のとおりです:

私は毎日いっぱいになっているログシートを持っています。ログには、毎日実行される設定基準(A、B、Cなど)があります。ログを毎日ファイルに保存したいのですが、コマンドボタンを別のワークブックにマスターファイル(「A_Masterfile」、「B_Masterfile」など)としてエクスポートできるようにします。

私は研究を試みましたが、これらの要件はすべて異なるサイト/ページから来ています。しかし、彼らが使用するメソッドがとても異なるので、私はすべてのSyntaxを一つのコードがすべてを行うことができるようにするのは苦労しています。

  1. エクスポートアクティブなワークシートを別のブック

    a)は、ブックが存在する場合は、ワークブックの最後にシートをコピー

    Bへ:ランダウンとして

    は、ここで私はそれが何をしたいです)ブックが存在しない場合は、ブックとコピーシートを作成する

  2. デスティネーションブックはセルに基づいています(基準A、Bなど)

  3. リンク先のブックは、私がこれまでに研究していた内容に基づいて、ソースワークシート/ワークブック

として別のフォルダにあるかもしれない、これは私が上げてるものです。

単純にコピーすると、これは私が読んだものですが、動作させることができませんでした。新しいファイルを作成するための

ActiveSheet.Copy After:=Workbooks("Destination.xlsx").Worksheets(Worksheets.Count) 

、これは私が読んだものですが、でも元のサイトから、彼らはこの問題は、それが全体のブックだけではなく、一つの特定のシートをコピーしたと述べました。

ActiveWorkbook.SaveAs "C:\path\Destination.xlsx" 

最後に、セル値に基づいて「宛先」ファイル名を作成するための連結について読みます。しかし、私はすべての構文を失ってしまった。貼り付けをコピーしてみましたが、動作させることができませんでした。

これはかなり質問します。すべてのあなたの助けを前もってありがとう! 何かを明確にできるかどうか教えてください。

P.S.補足:私はQBasicとMATLABを少しずつやっていて、Javaプログラミングは学校で少ししか行っていないので、ロジックの部分がダウンしました。しかし、私はVBAの構文にはかなり新しいので、余分な情報をいただければ幸いです。 :)

アップデート: 私は、「マクロの記録」について学んだと私はそれを、私はそれからこれを得た

を使用してみました、それが動作します:

Sheets("SourceSheet").Select 
ActiveSheet.CheckBoxes.Add(639, 30, 58.8, 16.8).Select 
ActiveSheet.CheckBoxes.Add(639.6, 44.4, 58.8, 16.8).Select 
ActiveSheet.CheckBoxes.Add(639.6, 61.2, 58.8, 16.8).Select 
ActiveSheet.OptionButtons.Add(1279.8, 37.8, 20.4, 18).Select 
ActiveSheet.OptionButtons.Add(1280.4, 57, 21.6, 17.4).Select 
Sheets("SourceSheet").Copy After:=Workbooks("DestinationMasterFile.xlsx").Sheets(1) 
Windows("SourceWorkBook.xlsm").Activate 

それは動作しますが、唯一の後にそれを置きます最初のシートを最後に置くのではなく、私はそれが。シート(1)から来ることを知っていますが、それ以外の方法で書く方法はわかりません。ありがとう。

+0

私はあなたの質問を編集して、マクロを変更する際の問題に集中することをお勧めします。良い答えを引きつけるのはおそらく長すぎます。 –

+0

@GrishaLevit:コメントをいただきありがとうございます。私はこのサイトを初めて利用しています。私はちょうど私が欲しかったことについてできるだけ具体的にしようとしました。どの情報を追加/削除することをお勧めしますか?ありがとう! – DWReyes

答えて

0

私はずっと多くの研究と試行錯誤を重ねてきましたが、実際のコードを思いつきました。これは面倒かもしれませんが、それは動作します。それ以上の改善が認められます。

Private Sub CommandButton1_Click() 

'Code for Locking 
Sheets("W").Unprotect 
Range("A1:BZ125").Locked = True 
Sheets("W").Protect Password:="hello" 






'Code for Copying 

'Declarations 
Dim Wk As Workbook 
Dim FName As String 
Dim FNameTwo As String 
Dim FilePath As String 
Dim TestStr As String 
Dim wb As Workbook 

'Initializing Constants 
Set wb = ThisWorkbook 
FName = "C:\Users\PHReyesDa\Desktop\" & Range("BO1") & ".xlsx" 
FNameTwo = Range("BO1") + ".xlsx" 

'If statement Setup (if exist) 
FilePath = FName 
    TestStr = "" 
    On Error Resume Next 
    TestStr = Dir(FilePath) 
    On Error GoTo 0 

'If statement 

If TestStr = "" Then 
     'If not existing, create new file 
     MsgBox "File didn't exist yet; new file created" 
     Set Wk = Workbooks.Add 
     Application.DisplayAlerts = False 
     Wk.SaveAs Filename:=FName 
     Application.DisplayAlerts = True 
     Workbooks(FNameTwo).Close SaveChanges:=True 
End If 

'Reopens Master File 
Workbooks.Open FName 

wb.Activate 

'Find number of worksheets in destination workbook to worksheet could be copied to end of workbook 
Dim Num As Integer 
Num = Workbooks(FNameTwo).Worksheets.Count 

'Copy source worksheet to (the end of) destination workbook 
Sheets("W").Select 
Sheets("W").Copy After:=Workbooks(FNameTwo).Worksheets(Num) 

'Close and save new workbook, confirmation of successful copy 
Workbooks(FNameTwo).Close SaveChanges:=True 
MsgBox "Worksheet successfully exported and saved to master file" 

End Sub 
関連する問題