|
はじめまして。VBA初心者です。
過去ログを検索して見てやっているのですがうまく出来ないのでお助けください。
したい事はA.xlsにB.xls C.xlsの全てのシートをコピーしたいのです。
1.コピーされるエクセルはエクセル名も一定でなくシート数も一定ではありません。
2.コピーしたシートにS1.S2みたいにコピー順にシート名を付けたいと思ってます。
下記のものを作ってみました。
Function GETFF()
On Error Resume Next
GETFF = Application.GetOpenFilename(FileFilter:="Excel;Csv ファイル (*.xls;*.csv), *.xls;*.csv", Title:="対象ファイルを選んで下さい")
End Function
Sub S()
Dim filem, filem_2
Dim shtnm, SN, sht As String
Dim a%, b%, c%, d%, e%, f%, g%, h%, i%, j%, k%, l%, n%
'確認メッセージ
clicked = MsgBox(PROMPT:="シートをコピーします。", Buttons:=1 + 16, Title:="シートのコピー")
If clicked = 2 Then Exit Sub
'処理を隠す
Application.StatusBar = "処理実行中"
Application.ScreenUpdating = False
'加工するブックを開く
On Error Resume Next
filem = GETFF()
Workbooks.Open Filename:=filem
filem_2 = activebook
If Err.Number = 1004 Then
MsgBox "ファイルが指定されてません。"
End If
On Error GoTo 0
bkname_1 = ActiveWorkbook.Name
shtnm = ActiveSheet.Name
Windows("A.xls").Activate
Sheets("MENU").Select
Range("B100").Value = bkname
Range("B101").Value = shtnm
bkname = ActiveWorkbook.Name
'シートのコピーを始める
Windows(bkname_1).Activate
For i = 1 to Worksheets.count
Sheets(i).Copy Before:=Workbooks(bkname).Sheets(1)
next i
Windows(bkname_1).Close
'ステータスバーの表示解除
Application.StatusBar = False
End Sub
コピーは出来ますが同じシートをシート数だけコピーしてしまいます。
宜しくお願いします。
|
|