2

4 つのワークシート (「初期ワークブック」) を含むワークブックがあります。
4 つのワークシートすべてを別のワークブック (「新しいワークブック」) にコピーする必要があります。

以下のコードを使用すると、新しいワークブックから初期ワークブックに移動し、特定の範囲を 1 つのワークシートにコピーできます。これを修正して、元のワークシートの 4 つのワークシートすべてを選択してコピーできるようにしたいと思います。

あなたが提供できるどんな助けも大歓迎です:

Private Sub CommandButton1_Click()

    Dim wkbCrntWorkBook As Workbook
    Dim wkbSourceBook As Workbook

    Dim rngSourceRange As Range
    Dim rngDestination As Range

    Set wkbCrntWorkBook = ActiveWorkbook

    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Excel 2002-03", "*.xls", 1
        .Filters.Add "Excel 2007", "*.xlsx; *.xlsm; *.xlsa", 2
        .AllowMultiSelect = False
        .Show

        If .SelectedItems.Count > 0 Then
            Workbooks.Open .SelectedItems(1)
            Set wkbSourceBook = ActiveWorkbook
            Set rngSourceRange = Application.InputBox(prompt:="Select source range", Title:="Source Range", Default:="$A:$CS", Type:=8)
            wkbCrntWorkBook.Activate
            Set rngDestination = Application.InputBox(prompt:="Select destination cell", Title:="Select Destination", Default:="A1", Type:=8)
            rngSourceRange.Copy rngDestination
            rngDestination.CurrentRegion.EntireColumn.AutoFit
            wkbSourceBook.Close False
        End If
    End With

End Sub
4

3 に答える 3

4

魅力のように機能します:

ActiveWorkbook.Sheets.Copy

(出典: http://www.mrexcel.com/forum/excel-questions/404450-visual-basic-applications-copy-active-workbook-new-workbook.html )

于 2016-01-19T15:10:11.080 に答える
2

この再加工されたコードは、ワークシートをコピーする必要があります。

Private Sub CommandButton1_Click()
    薄暗い wkbSource をワークブックとして
    Dim wkbTarget As Workbook '混乱を避けるため、ソースとターゲットを名前として使用することをお勧めします
    文字列としての暗い strFileName

    wkbSource = ActiveWorkbook を設定

    strFileName = Application.GetOpenFilename( _
        "Excel 2002-03 (*.xls)、*.txt、" & _
        "Excel 2007 (*.xlsx; *.xlsm; *.xlsa), *.xlsx; *.xlsm; *.xlsa")

    If strFileName = "False" Then Exit Sub 'ロケールも False を返すことを確認してください!

    wkbTarget = Workbooks.Open(strFileName) を設定します。
    wkbSource.Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Copy _
        前:=wkbTarget.Sheets(1)
    '編集はここまで

    wkbTarget.Close False

サブ終了

必要に応じてシート名を置き換えるだけです。

(PS: シートを別のワークブックにコピーするマクロを記録するだけで、これらのコマンドを自分で見つけることができます - そして生成されたコードを見てください! ;-) )

于 2013-01-31T08:13:18.857 に答える