|
「コマンドボタンクリックで、エクセルファイル(複数の場合があります)を選択して開き取得した値を、
新規別ブックで保存」という動作をさせたいです。
エクセルファイル選択キャンセルした際の抜け方がわからないのと、
構文をもっと簡潔にする方法がありましたら ご指導お願いします。
(エクセルのバージョンは2000です)
Private Sub CommandButton1_Click()
Dim FName As Variant
Dim x As Variant
Dim SourceName As String
Dim a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s As Variant
Dim t1, t2, t3, t4, t5, t6 As Variant
FName = Application.GetOpenFilename( _
FileFilter:="Excelファイル,*.xls,すべてのファイル,*.*", _
MultiSelect:=True)
i = 1
For Each x In FName
Workbooks.Open Filename:=x
Worksheets(1).Activate
a = Worksheets(1).Range("G1").Value
b = Worksheets(1).Range("G2").Value
' c〜sまでデータを格納
t1 = Worksheets(1).Range("a17:a30").Value
t2 = Worksheets(1).Range("b17:b30").Value
t3 = Worksheets(1).Range("j17:j30").Value
t4 = Worksheets(1).Range("n17:n30").Value
t5 = Worksheets(1).Range("p17:p30").Value
t6 = Worksheets(1).Range("s17:s30").Value
ActiveWorkbook.Close
CreateNewBook
Worksheets("Sheet1").Range("A6").Value = a
Worksheets("Sheet1").Range("B6").Value = b
' c〜sの値を新しいシートのセルに格納
Worksheets("Sheet1").Range("T6:t19").Value = t1
Worksheets("Sheet1").Range("u6:u19").Value = t2
Worksheets("Sheet1").Range("v6:v19").Value = t3
Worksheets("Sheet1").Range("w6:w19").Value = t4
Worksheets("Sheet1").Range("x6:x19").Value = t5
Worksheets("Sheet1").Range("y6:y19").Value = t6
i = i + 1
'ファイル名を付けて保存
ActiveWorkbook.SaveAs Filename:=Format(Now, "yy-mm-dd hh-mm-ss") & CStr(i) & ".xls"
ActiveWorkbook.Close
Next x
End Sub
Sub CreateNewBook()
Workbooks.Open "出力フォーム.xls"
Worksheets("Sheet1").Activate
End Sub
|
|