30000件のデータが1つのファイルの
中にあります。
これを100件ずつに小分けに
して、それぞれファイル名を
つけてファイルを分けることは
できるでしょうか?
一個一個手作業でするのではなく
自動で動くようにするにはです。
一個一個やっていると
ミスもありそうなので。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Sub Test()



'ファイル名は0001.xls, 0101.xls, 0201.xls ・・・・ です。
'列数は10
'行数は1000
'ここは適当にかえてください。

'一度に30000行までやると時間がかかるので、hの値は区切って行った方がいいかもしれません。

'一応、動作は見ていますが、EXCELは慣れていないので文法間違いはあるかもしれません。
'オリジナルファイルはバックアップしておいてください。

Dim h, i, j, k As Long
Dim myExcel As Object
Dim myBook As Object
Dim Row, Col As Long
Dim wkFolder As String

wkFolder = "C:\XLS\" 'XLSの作成されるフォルダ


For h = 1 To 1000 Step 100 '行数
Set myExcel = CreateObject("Excel.Application")
myExcel.Visible = True
Set myBook = myExcel.Workbooks.Add
ScreenUpdating = False

For i = h To (h + 99)
k = k + 1
For j = 1 To 10 '列数
myExcel.Cells(k, j).Value = Sheet1.Cells(i, j).Value

Next j
Next i

ChDir wkFolder
myBook.SaveAs Filename:=wkFolder & Format(h, "0000") & ".xls"
myExcel.Quit
k = 0
Next h
End Sub

この回答への補足

大変ありがとうございました。
解決することが
できました。
またよろしくお願いします。

補足日時:2003/09/27 13:32
    • good
    • 0

>myBook.SaveAs Filename:=wkFolder & Format(h, "0000") & ".xls"



myBook.SaveAs Filename:=wkFolder & Format(h, "00000") & ".xls"

一桁、たりませんでした。

なお、保存する時に、同じファイル名のものが先に存在すると、確認のためにダイアログでるかもしれません。
    • good
    • 0

#2です。


下のマクロは自身のPCで正常に動作するのは確認していますが、貴殿のファイルできちんと正常に動作するかどうかはわからないので、動作させる前にファイルのバックアップなどを取ってから試してください。

データの消失に関しては責任を負えませんのであしからず。。
    • good
    • 0

こんばんわ。


あんまり自信がないのですが・・・。

以下のマクロを実行してみて下さい。
Sheets("Sheet2").Select
Rows("1:100").Select
Selection.Cut
Workbooks.Add
Rows("1:100").Select
ActiveSheet.Paste
Range("A1").Select
ActiveWindow.ActivateNext
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveWindow.ActivateNext
ActiveWorkbook.SaveAs FileName:=Workbooks("book1").Sheets("sheet1").Range("a1").Value
ActiveWindow.Close


補足しますと・・・。
まずデータが入ってるファイルのデータが入ってるシートをSheet2とし
マクロを実行するシートをSheet1としています。
そのマクロを実行するシートのA1に入れた名前がファイル名となり保存される仕組みです。

もし、そこまで必要ないのであれば、
Rows("1:100").Select
Selection.Cut
Workbooks.Add
Rows("1:100").Select
ActiveSheet.Paste
Range("A1").Select
ActiveWindow.ActivateNext
Selection.Delete Shift:=xlUp
Range("A1").Select

このマクロをデータのあるシート上で実行すれば100個のデータが移動したものがbook1として出来ているはずですので名前をつけて任意の場所に保存してください。
    • good
    • 0
この回答へのお礼

大変ありがとうございました。
解決することが
できました。
またよろしくお願いします。

お礼日時:2003/09/27 13:32

VBAなどで、可能だと思うのですが、


ちなみにどんなデータでしょうか?

住所録ですか? なら一例を示すと回答がつきやすいと
思います。

例えば・・・・
 A列  B列  C列
 住所 氏名  電話番号

のようにデータがありますなど。

この回答への補足

アドバイスありがとうございます。
一例を示させていただきます。

A列・・・すべて100と入れます
B列・・・すべて0と入力
C列・・・A-B-11222
(ここにはそのそれぞれの商品番号を入れます)
D列・・・ここは空白です。
E列・・・空白
F列・・・111と入力
G列・・・222と入力
H/I/J列・・・空白
K列・・・商品名
L列・・・詳細
M列・・・その他の情報
N列・・・その他の情報
O/P/・・・空白
Q列・・・値段
R列・・・その他の情報
S列・・・1と入力
といった表になっております。

それを特に並び替えたりするのではなく
とりあえず100件づつに
分けたいのです。

足りない点がありましたら
ご指摘ください。

補足日時:2003/09/23 13:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報