4

ある本から別の本にすべてのシートをコピーしようとしています

Windows("test.xls").Sheets.Copy Before:=Workbooks(ThisWorkbook).Sheets("00")

エラー - タイプが一致しません!
「test.xls」はActiveWorkBookと同じフォルダにあります。
特に - 「test.xls」を開かずにこれを行う方法はありますか?

4

2 に答える 2

9

閉じたワークブックを開き (バックグラウンドで開くと、閉じたブックで作業するよりもはるかに簡単です)、すべてのシートをTest.xls 他のブックの特定の部分 (つまり、シートの前00) に 1 行でコピーできます。

以下のコード:

  • 閉じたブックを開くc:\temp\Test.xls")
  • 00コードを含むワークブックのシートの前にすべてのシートをコピーします
  • 閉じるTest.xls

コードは、アラート、Test.xls のコード イベント、および画面の更新を抑制しました。

Sub CopyAll()
Dim Wb1 As Workbook
Dim Wb2 As Workbook
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
Set Wb1 = Workbooks.Open("c:\temp\Test.xls")
Set Wb2 = ThisWorkbook
Wb1.Sheets.Copy Before:=Wb2.Sheets("00")
Wb1.Close False
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub
于 2012-08-19T23:23:19.030 に答える
4

単純に考えているのかもしれませんが、すべてのシートをコピーしたい場合は、基本的にスプレッドシートファイル全体をコピーしています。プログラムで「古い」ワークブックを新しい名前で保存する方が簡単ではないでしょうか? 同じ内容でまったく新しいファイルを作成します。

多分私は何かが欠けているかもしれませんが、それを見るのは別の角度です.

于 2012-08-19T21:58:40.927 に答える