Я действительно новичок в VBA, но мне удалось написать код, основанный на примерах в основном с этого сайта.
Кусок кода предназначен для копирования данных из нескольких CSV-файлов в один файл xls (а затем для переименования исходных файлов csv).
Хотя он отлично работает в Excel 2003, он не работает так хорошо в Excel 2010/2013 (я не смог проверить его на E2007).
Оказывается, чтобы остановить после копирования данных из первого файла CSV в XLS файл, так что после этой строки:Код VBA из Excel 2003 не работает должным образом в Excel 2010/2013
Range("B4:AZ" & LR).Copy wbDEST.Sheets("Data").Range("B" & NR)
с ошибкой 1004 «приложение или Объектно определенные ошибки». Отладчик выделяет следующую строку, т.е.
NR = wbDEST.Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row + 1
Я просто не могу видеть, что случилось с ним, как та же линия используется в начале кода и не останавливаться на достигнутом.
Буду признателен за ваш совет.
А вот весь код:
Option Explicit
Sub ImportData()
Dim fPATH As String, fNAMEcsv As String, fNAMEbak As String
Dim LR As Long, NR As Long
Dim wbSOURCE As Workbook, wbDEST As Workbook
Set wbDEST = Workbooks.Open("C:\Utility\Data.xls")
NR = wbDEST.Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row + 1
fPATH = "C:\Utility\DataFiles\" 'remember the final \ in this string
fNAMEcsv = Dir(fPATH & "*.csv") 'get the first filename in fpath
Do While Len(fNAMEcsv) > 0
Set wbSOURCE = Workbooks.Open(fPATH & fNAMEcsv, Local:=True) 'open the file
LR = Range("B" & Rows.Count).End(xlUp).Row 'how many rows of info?
If LR > 1 Then
Range("B4:AZ" & LR).Copy wbDEST.Sheets("Data").Range("B" & NR)
NR = wbDEST.Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row + 1
End If
wbSOURCE.Close False 'close data workbook
fNAMEbak = fNAMEcsv & ".bak" 'rename imported file to .bak
Name (fPATH & fNAMEcsv) As (fPATH & fNAMEbak)
fNAMEcsv = Dir 'get the next filename
Loop
MsgBox ("Completed. Check results on PRINTOUT sheet.")
End Sub
Nothin 'но дело с вами, а? +1 –
+1 Я думаю, что вы были слишком многословными. – brettdj