Я ищу макрос для поиска строки из листа в соответствии с заданными критериями. И он соответствует строке с другого листа и вставляет изображение соответствует этому тексту. если строка не найдена, она должна оставить этот поиск и искать следующий. например, мне нужно сделать строку поиска и преобразовать ее в файл pdf.Нужно создать макрос для поиска строки и сопоставить строку с другим открытым листом и вставить соответствующее изображение.
вот пример кода
Sub EXCELTOPDF()
Dim strPath As String
Dim strFile, A As String
Dim NextRow As Long
strPath = "C:\Users\919944\desktop\xyz"
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strFile = Dir(strPath & "*.xls", vbNormal)
Do While strFile <> ""
Workbooks.Open strPath & strFile
On Error Resume Next
If (Cells.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate) Then
ActiveCell.Value = ActiveCell.Value()
ActiveCell.Select
Windows("Image_S.xlsx").Activate
Cells.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Shapes.Range(Array("Picture 123")).Select
Selection.Copy
Windows(strFile).Activate
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
End If
If (Cells.Find(What:="XYZ", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate) Then
ActiveCell.Value = ActiveCell.Value()
ActiveCell.Select
Windows("Image_S.xlsx").Activate
Cells.Find(What:="XYZ", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Shapes.Range(Array("Picture 638")).Select
Selection.Copy
Windows(strFile).Activate
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
End if
If (Cells.Find(What:="EFGH", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate) Then
On Error Resume Next
ActiveCell.Value = ActiveCell.Value()
ActiveCell.Select
Windows("Image_S.xlsx").Activate
Cells.Find(What:="EFGH", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Shapes.Range(Array("Picture 24")).Select
Selection.Copy
Windows(strFile).Activate
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
End If
If (Cells.Find(What:="PQRS", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate) Then
ActiveCell.Value = ActiveCell.Value()
ActiveCell.Select
Windows("Image_S.xlsx").Activate
Cells.Find(What:="PQRS", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveSheet.Shapes.Range(Array("Picture 23")).Select
Selection.Copy
Windows(strFile).Activate
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
End If
iPtr = InStrRev(ActiveWorkbook.FullName, ".")
If iPtr = 0 Then
sFileName = ActiveWorkbook.FullName & ".pdf"
Else
sFileName = Left(ActiveWorkbook.FullName, iPtr - 1) & ".pdf"
End If
sFileName = Application.GetSaveAsFilename(InitialFileName:=sFileName, fileFilter:="PDF Files (*.pdf), *.pdf")
If sFileName = "False" Then Exit Sub
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, filename:=sFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
strFile = Dir
Loop
End Sub
В приведенном выше примере ABC не найден, то перейти в область поиска следующей строки XYZ. image_s - это рабочий лист, содержащий список изображений, связанных с этим именем. любезно сделайте потребный
привет pnuts, В моем коде выше, если ABC представляет в рабочем листе, то он автоматически ищет и выбирает изображение и вставить его в следующую активную ячейку. но если ABC не существует, это показывает ошибку отладки. Теперь, если я поместил код «on error resume next». он переходит к другому поиску, но он все еще выбирает изображение, относящееся ко всем именам, указанным на листе, и вставляет его в мой рабочий лист любезно, делает нужным – vicky
. Какова цель второго 'Find()' - если вы знаете имя вам нужно копировать, почему бы просто не выбрать это? –
Вы говорите, что вы «ищете макрос». Означает ли это, что вы на самом деле не занимаетесь программированием? Ваш метод, чтобы найти какой-то код, который похож на то, что вы хотите, а затем опубликовать его здесь с указанием того, что вы хотите, и попросить других людей запрограммировать его для вас? –