|
▼ブーチー さん:
2010では、セル全体をコピペする動作を繰り返しますと、エクセル障害になりますので
いろいろ細工をしましたが、すんなりとはいきません。
2003ならOKかもしれませんので試してみてください。
なお、実行はフォルダを2つ作り、変換すべきブックを一方のフォルダに格納してください。
マクロの最初で変換元、変換先のフォルダ指定画面がでます。
変換後のブックが同じ名前で変換先に指定したフォルダに保存されます。
Sub Sample()
Dim fold1 As String
Dim fold2 As String
Dim fname As Variant
Dim sh As Worksheet
Dim svNewNos As Long
Dim fromWB As Workbook
Dim toWB As Workbook
Dim x As Long
Dim cl As Collection
Set cl = New Collection
fold1 = getFolder("変換すべきブックのフォルダを選んでください")
If Len(fold1) = 0 Then Exit Sub
fold2 = getFolder("変換したブックの保存フォルダを選んでください")
If Len(fold1) = 0 Then Exit Sub
If fold1 = fold2 Then
MsgBox "変換目、返還後のフォルダを同じものにすることはできません"
Exit Sub
End If
Application.ScreenUpdating = False
svNewNos = Application.SheetsInNewWorkbook
fname = Dir(fold1 & "*.xls")
Do While Len(fname) > 0
cl.Add fname
fname = Dir()
Loop
For Each fname In cl
Set fromWB = Workbooks.Open(fold1 & fname)
Application.SheetsInNewWorkbook = fromWB.Worksheets.Count
Set toWB = Workbooks.Add
x = 0
For Each sh In fromWB.Worksheets
x = x + 1
sh.Cells.Copy toWB.Worksheets(x).Range("A1")
Application.CutCopyMode = False
DoEvents
DoEvents
Next
fromWB.Close False
Application.DisplayAlerts = False
toWB.SaveAs fold2 & fname
Application.DisplayAlerts = True
toWB.Close
DoEvents
DoEvents
Next
Application.SheetsInNewWorkbook = svNewNos
Application.ScreenUpdating = True
MsgBox "変換がおわりました"
End Sub
Private Function getFolder(msg As String) As String
Dim myPath As Object
Dim hWnd As Long
Const BIF_RETURNNONLYFSDIRS = &H1 'ディレクトリのみ選択可
Const BIF_EDITBOX = &H10 'アイテム名入力用のEdit_boxを表示
hWnd = Application.hWnd
With CreateObject("Shell.Application")
Set myPath = .BrowseForFolder(hWnd, msg, BIF_RETURNNONLYFSDIRS Or BIF_EDITBOX)
End With
If Not myPath Is Nothing Then getFolder = myPath.Items.Item.Path & "\"
End Function
>▼UO3 さん:
>
>>ところでブーチーさんの環境は 2003以前ですか?2007以降ですか?
>
>2003 win7です。
>よろしくお願いいたします。
|
|