3

複数のワークシートがworkbook1.xlsmあり、さまざまな式がいっぱいあるとします。まったく同じようにworkbook2.xlsx見える新しいものを作成したいのですが、すべてのセルで数式ではなく値になります。workbook1

1枚のシートをコピーするためのこのマクロがありますworkbook1

Sub nowe()

Dim Output As Workbook
Dim FileName As String

Set Output = Workbooks.Add
Application.DisplayAlerts = False

ThisWorkbook.Worksheets("Przestoje").Cells.Copy

Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteFormats

FileName = ThisWorkbook.Path & "\" & "worksheet2.xlsx"
Output.SaveAs FileName

End Sub

しかし問題は、ワークシートを 1 つしかコピーせず、名前を付けていないことworksheet1です。私はそれを把握することはできません。

さらに別の問題は、worksheet2後で開かれていることです。私はこれをしたくありません。

これらの問題を解決するにはどうすればよいですか?

4

4 に答える 4

3

新しいワークブックを作成してシートをコピーすることなく、できるだけ簡単にそれを行います。

いくつかの簡単な手順:taking into consideration thisworkbook >> for each worksheet within thisworkbook >> copy+paste values of used range within worksheet >> save as new workbook as xlsx type >> open back base workbook >> and finally close one we created.

コードは単純で、次のようになります。

Sub nowe_poprawione()

    Dim Output As Workbook
    Dim Current As String
    Dim FileName As String

    Set Output = ThisWorkbook
    Current = ThisWorkbook.FullName

    Application.DisplayAlerts = False

    Dim SH As Worksheet
    For Each SH In Output.Worksheets

        SH.UsedRange.Copy
        SH.UsedRange.PasteSpecial xlPasteValues, _
            Operation:=xlNone, SkipBlanks:=True, Transpose:=False

    Next

    FileName = ThisWorkbook.Path & "\" & "worksheet2.xlsx"
    Output.SaveAs FileName, XlFileFormat.xlOpenXMLWorkbook
    Workbooks.Open Current
    Output.Close
    Application.DisplayAlerts = True
End Sub
于 2013-06-22T19:16:38.140 に答える