|
▼マナ さん:
>
>wsx.Columns(k + 1).Value = wb.Worksheets("Sheet1").Columns(2).Value
>
>確認してみてください。
>コピー範囲が大きいと、処理速度が落ちるかも知れませんが
>コードが簡潔になるので、わたしはよく使います。
>>エラーメッセージが出たら終了
>
>ではなく、その番号のブックが存在するかをDir関数で確認し
>しなければ、Exit forでループを抜ける
>
>といった感じにします。
>そうすると、今のコードを、ほぼそのまま使えます。
>Dir関数についてはネットで検索してみてください。
>> Set wsx = ThisWorkbook.Worksheets("Sheet1")
>
>これは、ループの外で、最初に1回実行でよいです。
>わかりますよね。
ありがとうございます!返信遅れて申し訳ありません。
コードが長くなると多分自分でもよくわからなくなって来てしまうので、コピー・ペーストは一行にまとめました!
Dir関数については調べたところ、If文と組み合わせるのがよいかと思ったので下記の通りに組んでみました。Elseをどういった形にするかで迷っていたのですが、消してみても問題なかったのでそのままにしてあります。
wsxはおっしゃる通りでした…!
Sub Exam1()
'
' exam1 Macro
'
Dim wb As Workbook
Dim ws As Worksheet
Dim wsx As Worksheet
Dim FileNumber As String
Set wsx = ThisWorkbook.Worksheets("Sheet1")
For k = 1 To 999
Set wb = Workbooks.Open("C:\Users\user\Desktop\exam\" & k & ".xlsx")
wsx.Columns(k + 1).Value = wb.Worksheets("Sheet1").Columns(2).Value
wb.Close False
FileNumber = Dir("C:\Users\user\Desktop\exam\" & k + 1 & ".xlsx")
If FileNumber = "" Then
Exit For
End If
Next k
End Sub
今回も4つ分のファイルで行ったのですが、エラーメッセージはありませんでした!
|
|