- ベストアンサー
EXCEL2000とEXCEL2003のVBAについて理解しましょう
- EXCEL2000とEXCEL2003のVBAにおいて、特定のコードが正しく実行されない問題が発生しています。
- 問題が発生しているコードは「.UsedRange.Copy myb」であり、エラーが出ずにファイルは開かれているにも関わらずコピーが行われない状態です。
- EXCEL2000でこのコードを実行すると正常にコピーが行われるため、問題点はEXCEL2003側にある可能性があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まず、今回のマクロだけでは、 >Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2") これは、生きていないですね。 実際に試したわけではないのですが、バージョンによって違いが出るとも思えないですね。 .Worksheets("Sheet1").UsedRange.Copy ただ、ここが気になりますね。空の場合は、「1セル」しかコピーしませんが、それを貼り付けても、無駄になってしまいます。 絶対に、空はないならよいのですが、本当は、 If WorksheetFunction.CountA(Worksheets("Sheet1").Cells) >0 Then などで、シートを検査したほうがよいと思いますね。なお、必ず、Sheet1 というシートがあるという前提です。 それから、最後尾の次になるから、myb.Offset(1) でしょうね。 正しく動くかは分かりませんが、書き換えてみました。 Sub 日別データ読込R() Dim DestBook As Workbook Dim pathmacrobook As String Dim namebook As String Dim myb As Range pathmacrobook = ThisWorkbook.Path & "\CSV読込データ12\" Set DestBook = Workbooks("残高集計用.xls") namebook = Dir(pathmacrobook & "*.xls") Do While Not namebook = "" Set myb = DestBook.Worksheets(3).Range("A65536").End(xlUp) With Workbooks.Open(pathmacrobook & namebook) On Error Resume Next .Worksheets("Sheet1").UsedRange.Copy myb.Offset(1) On Error GoTo 0 .Close False End With namebook = Dir() Loop Set DestBook = Nothing MsgBox "完了しました" End Sub
お礼
ありがとうございます!! うまく動きました。