2015-12-21 23 views
3

Введение: Я экспортирую маркетинговые отчеты за клик-курсы, которые дают мне URL-адреса продуктов с сайта моей компании. Мне нужен столбец, который отображает название продукта в виде текста дисплея, сохраняя текст в виде гиперссылки. Это необходимо для создания источника данных для почтового ящика, использующего столбец с заголовком/гиперссылкой продукта.Excel VBA - Set Hyperlink Текст дисплея

У меня есть макрос VBA настроить так:

Sub ClickableLinkTitle() 
'Dim List As Integer, result As String 
'Range("$G$2:$G$158").value = List 
'Range("$H$2:$H$158").value = result 

Dim i As Long 
Dim j As Integer 
Dim value As String 

j = 7 

For i = 2 To Rows.Count 
    If Not IsEmpty(Cells(i, 6)) Then 
     value = Cells(i, 6).value 

     If value = "http://example.com/products/db.asp?prodID=1" Then 
      Cells(i, j).value = "Product 1" 
     ElseIf value = "http://example.com/products/db.asp?prodID=2" Then 
      Cells(i, j).value = "Product 2" 
     ElseIf value = "http://example.com/products/db.asp?prodID=2" Then 
      Cells(i, j).value = "Product 3" 

     '(ect....until Product 400-and-something) 

     End If    
    End If 
Next i 
End Sub 

Это приводит к ошибке компиляции с указанием процедуры слишком долго. Я уже разбил его на несколько субтитров, но я не хочу продолжать это делать. Это также так ручно, что он почти побеждает цель создания макроса. Но так как я уже создал его, и у меня есть отношения для URL-адресов &, названия продуктов установлены. Я не просто хочу его выбросить.

Вопрос: Каков наиболее эффективный метод создания столбца, отображающего название продукта, являющегося гиперссылкой на продукт на моем веб-сайте?

Новички усилие: Extract URL-адрес & названия продукта от моего макро и положить их на две отдельные колонки затем выяснить макрос, чтобы объединить два.

Отсканируйте URL-адрес и запишите заголовок страницы из тега заголовка html, чтобы отобразить его как название продукта.

+1

Я бы попытаться найти последнюю использованную строку в этой колонке, а не поиск через весь 1048576 строк рабочего листа. Что-то похожее на 'With Sheets (« Sheet1 ») lastRow = .Range (« F »& .Rows.Count) .End (xlUp) .Row End With' – NinjaLlama

+0

A Выбрать регистр для' value' также может помочь – NinjaLlama

+0

@ NinjaLlama Я действительно не понимаю, что это будет делать? Благодарю вас за предложение. – sshel207

ответ

0

если ваши имена продукта по образцу вы показываете вы могли бы сделать что-то вроде этого

For i = 2 To Rows.Count 
    If Not IsEmpty(Cells(i, 6)) Then  
      Cells(i, j).value = Replace(Replace(Value,"http://company.com/",""), "-", " ")  
    End If 
Next i 
+0

URL-адрес продукта - это строка запроса http://example.com/products/db.asp?prodID=1 http://example.com/products/db.asp?prodID=2 http: // example .com/products/db.asp? prodID = 3 Итак, я бы предположил, что ваш ответ все равно будет работать. Я должен попробовать, спасибо Торарины! – sshel207

+0

Теперь, когда я думаю об этом, я не думаю, что это сработает. – sshel207

Смежные вопросы