У меня есть один макрос кнопки для чтения данных из файлов excel после того, как вы оставили некоторые строки (несущественные начальные строки подробностей) (A1-A10) и объединили все эти файлы в один файл.Экран макроса Excel не отображает правильные данные
Он работает правильно, когда я использую файлы продуктов (файлы Excel, которые имеют сведения о конкретном продукте). Но когда я использую файлы excel, у которых есть данные компании, он читает одну строку из нерелевантной строки (A5), затем переходит к соответствующей части данных для чтения.
Я не могу понять, почему он читает одну строку, то есть название компании от компании excel. Я хочу, чтобы он напрямую переходил к (A11) -й строке для чтения. Что он делает с файлами produt.
Файлы продуктов - это файлы, которые содержат информацию о конкретном продукте. Принимая во внимание, что файлы компании - это файлы, в которых есть сведения обо всех продуктах конкретной компании.
С моим кодом ниже, я хочу знать, почему именно это название компании (строка A5), которую он не должен читать.
Sub Button2_Click()
Dim basebook As Workbook
Dim mybook As Workbook
Dim sourceRange As Range
Dim destrange As Range
Dim SourceRcount As Long
Dim N As Long
Dim rnum As Long
Dim MyPath As String
Dim SaveDriveDir As String
Dim FName As Variant
SaveDriveDir = CurDir
MyPath = "C:\"
ChDrive MyPath
ChDir MyPath
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xls), *.xls", _
MultiSelect:=True)
If IsArray(FName) Then
Application.ScreenUpdating = False
Set basebook = ThisWorkbook
For N = LBound(FName) To UBound(FName)
Set mybook = Workbooks.Open(FName(N))
rnum = LastRow(basebook.Worksheets(1)) + 1
Set sourceRange = mybook.Worksheets(1).UsedRange
SourceRcount = sourceRange.Rows.Count
Set destrange = basebook.Worksheets(1).Cells(rnum, "A")
'basebook.Worksheets(1).Cells(rnum, "D").Value = mybook.Name
' This will add the workbook name in column D if you want
sourceRange.Copy destrange
' Instead of this line you can use the code below to copy only the values
' With sourceRange
' Set destrange = basebook.Worksheets(1).Cells(rnum, "A"). _
' Resize(.Rows.Count, .Columns.Count)
' End With
' destrange.Value = sourceRange.Value
mybook.Close False
'Clear Rows
rnum = LastRow(basebook.Worksheets(1)) + 1
While Not rnum = 2
If basebook.Worksheets(1).Cells(rnum, 1).Value = "" Or
Left(basebook.Worksheets(1).Cells
(rnum, 1).Value, 9) = "Copyright" Or Left
(basebook.Worksheets(1).Cells(rnum, 1).Value, 4) = "Free" Or Left
(basebook.Worksheets(1).Cells(rnum, 1).Value, 7) = "Product" Or
Left(basebook.Worksheets(1).Cells(rnum, 1).Value, 9) = "Intl Port" Or
Left(basebook.Worksheets(1).Cells(rnum, 1).Value, 5) = "House" Or
Left(basebook.Worksheets(1).Cells(rnum, 1).Value, 7) = "Arrival" Or
Left(basebook.Worksheets(1).Cells(rnum, 1).Value, 5) = "Bill " Then
basebook.Worksheets(1).Rows(rnum).Delete
End If
rnum = rnum - 1
Wend
Next
End If
ChDrive SaveDriveDir
ChDir SaveDriveDir
Application.ScreenUpdating = True
End Sub
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Оба вопроса, ваш вопрос и ваш код, не совсем понятны. Поскольку вы ожидаете получить какую-то помощь от нас, вы должны приложить немного усилий, чтобы яснее понять. Первым шагом может быть структурирование кода должным образом, чтобы он был, по крайней мере, правильно вставлен в закладки (чтобы узнать, что находится внутри условия, цикл и т. Д. После быстрого просмотра). – varocarbas
Конечно! моя проблема в том, что я предполагаю извлечь файлы excel из этого кода. – analyticalpicasso
Я вижу ... Как сказано: вы должны сделать код достаточно понятным (например, с помощью табуляции). И вы должны объяснить, что вы имеете в виду с «fetch excel files», понимая, что у нас нет доступа к входным данным, мы не знаем, что теперь неправильно или что вы хотите сделать точно. Пример плохого вопроса: «это мой код, исправьте его для меня». Пример хорошего вопроса: «с помощью этого кода (правильно введенного в таблицу и прокомментированного), я анализирую 1,2,3,4, и он выводит a, b, c, d; я хочу, чтобы он выводил d, c, b, a, что мне делать?". Ну ... это мое предложение, если вы хотите получить помощь от меня или от любого другого человека, подобного мне – varocarbas