Advertisement
Guest User

Untitled

a guest
Jan 30th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.88 KB | None | 0 0
  1. Public Sub GetURLs()
  2. Dim URLSheet As Worksheet
  3. Dim URLSheetRow As Long
  4. Dim URLSheetRange As Range
  5. Dim SitemapSheet As Worksheet
  6. Dim SitemapSheetLastRow As Long
  7. Dim SitemapSheetRow As Long
  8. Dim TempXMLSheet As Worksheet
  9. Dim TempXMLSheetLastRow As Long
  10. Dim TempXMLSheetRow As Long
  11. Dim TempXMLSheetCellItemValue As Variant
  12.  
  13.  
  14. GetSitemaps
  15.  
  16. Set URLSheet = Sheets("URLs")
  17. Set SitemapSheet = Sheets("Sitemaps")
  18. Set TempXMLSheet = Sheets("TempXML")
  19.  
  20. While ActiveWorkbook.XmlMaps.Count > 0
  21. ActiveWorkbook.XmlMaps(1).Delete
  22. Wend
  23.  
  24. URLSheet.Columns(1).Clear
  25. URLSheet.Columns(2).Clear
  26. URLSheet.Columns(3).Clear
  27. TempXMLSheet.Columns(1).Delete
  28. TempXMLSheet.Columns(1).Delete
  29. URLSheetRow = 1
  30. SitemapSheetLastRow = SitemapSheet.Range("A" & Rows.Count).End(xlUp).Row
  31.  
  32. For SitemapRow = 1 To SitemapSheetLastRow
  33. ActiveWorkbook.XmlImport SitemapSheet.Cells.Item(SitemapRow, 1).Value, Nothing, True, TempXMLSheet.Range("A1")
  34. TempXMLSheetLastRow = TempXMLSheet.Range("A" & Rows.Count).End(xlUp).Row
  35.  
  36. For TempXMLSheetRow = 1 To TempXMLSheetLastRow
  37. TempXMLSheetCellItemValue = TempXMLSheet.Cells.Item(TempXMLSheetRow, 1).Value
  38.  
  39. If LCase(Left(CStr(TempXMLSheetCellItemValue), 4)) = "http" Then
  40. URLSheet.Cells.Item(URLSheetRow, 1).Value = TempXMLSheetCellItemValue
  41. URLSheet.Cells.Item(URLSheetRow, 2).Value = TempXMLSheet.Cells.Item(TempXMLSheetRow, 2).Value
  42. URLSheetRow = URLSheetRow + 1
  43. End If
  44. Next TempXMLSheetRow
  45.  
  46. While ActiveWorkbook.XmlMaps.Count > 0
  47. ActiveWorkbook.XmlMaps(1).Delete
  48. Wend
  49.  
  50. TempXMLSheet.Columns(1).Delete
  51. TempXMLSheet.Columns(1).Delete
  52. Next SitemapRow
  53.  
  54. Set URLSheetRange = URLSheet.Range("A1", "B" & CStr(URLSheetRow - 1))
  55. URLSheetRange.Sort URLSheet.Range("B1")
  56. End Sub
  57.  
  58. Public Sub GetSitemaps()
  59. Dim SitemapSheet As Worksheet
  60. Dim SitemapSheetRow As Long
  61. Dim TempXMLSheet As Worksheet
  62. Dim TempXMLSheetLastRow As Long
  63. Dim TempXMLSheetRow As Long
  64.  
  65.  
  66. Set SitemapSheet = Sheets("Sitemaps")
  67. Set TempXMLSheet = Sheets("TempXML")
  68.  
  69. While ActiveWorkbook.XmlMaps.Count > 0
  70. ActiveWorkbook.XmlMaps(1).Delete
  71. Wend
  72.  
  73. TempXMLSheet.Columns(1).Delete
  74. TempXMLSheet.Columns(1).Delete
  75. SitemapSheet.Columns(1).Clear
  76.  
  77. ActiveWorkbook.XmlImport "https://support.microsoft.com/sitemap_index", Nothing, True, TempXMLSheet.Range("A1")
  78. TempXMLSheetLastRow = TempXMLSheet.Range("A" & Rows.Count).End(xlUp).Row
  79. SitemapSheetRow = 1
  80.  
  81. For TempXMLSheetRow = 2 To TempXMLSheetLastRow
  82. If InStr(TempXMLSheet.Cells.Item(TempXMLSheetRow, 1).Value, "en-us_help") Then
  83. SitemapSheet.Cells.Item(SitemapSheetRow, 1).Value = TempXMLSheet.Cells.Item(TempXMLSheetRow, 1).Value
  84. SitemapSheetRow = SitemapSheetRow + 1
  85. End If
  86. Next TempXMLSheetRow
  87.  
  88. While ActiveWorkbook.XmlMaps.Count > 0
  89. ActiveWorkbook.XmlMaps(1).Delete
  90. Wend
  91.  
  92. TempXMLSheet.Columns(1).Delete
  93. TempXMLSheet.Columns(1).Delete
  94. End Sub
  95.  
  96. Public Sub GetTitlesOfSelectedURLs()
  97. Dim URLSheet As Worksheet
  98. Dim XMLHttpRequest As Variant
  99. Dim PosLeft As Long
  100. Dim PosRight As Long
  101. Dim Pos As Long
  102. Dim Title As String
  103. Dim TempTitle As String
  104. Dim ArticleNumber As String
  105. Dim URLSheetRow As Long
  106. Dim UnescapedQuote As Boolean
  107. Dim PrependText As String
  108.  
  109.  
  110. Set URLSheet = Sheets("URLs")
  111. URLSheet.Activate
  112. If Selection Is Nothing Then Exit Sub
  113. If TypeName(Selection) <> "Range" Then Exit Sub
  114. Set XMLHttpRequest = CreateObject("MSXML2.XMLHTTP")
  115.  
  116. For URLSheetRow = Selection.Row To Selection.Row + Selection.Rows.Count - 1
  117. Pos = InStr(1, URLSheet.Cells.Item(URLSheetRow, 1), "/help/", vbTextCompare)
  118.  
  119. If Pos > 0 Then
  120. Pos = Pos + 6
  121. ArticleNumber = Mid(URLSheet.Cells.Item(URLSheetRow, 1), Pos)
  122. Pos = InStr(ArticleNumber, "/")
  123.  
  124. If Pos > 0 Then
  125. ArticleNumber = Mid(ArticleNumber, 1, Pos - 1)
  126. End If
  127. Else
  128. GoTo Here2
  129. End If
  130.  
  131. PosRight = 0
  132. PosLeft = 0
  133. Title = ""
  134. HeadingExists = False
  135. XMLHttpRequest.Open "GET", "https://support.microsoft.com/app/content/api/content/help/en-us/" & ArticleNumber, False
  136. XMLHttpRequest.send
  137.  
  138. While XMLHttpRequest.readyState <> 4
  139. DoEvents
  140. Wend
  141.  
  142. 'Set Title = JSON Details.Heading if it exists
  143.  
  144. PosLeft = InStr(1, XMLHttpRequest.responseText, Chr(34) & "heading" & Chr(34) & ":", vbTextCompare)
  145.  
  146. If PosLeft > 0 Then
  147. PosLeft = PosLeft + 10
  148.  
  149. Do While Mid(XMLHttpRequest.responseText, PosLeft, 1) = " "
  150. PosLeft = PosLeft + 1
  151. Loop
  152.  
  153. If Mid(XMLHttpRequest.responseText, PosLeft, 1) = Chr(34) Then
  154. PosRight = PosLeft
  155.  
  156. Do
  157. PosRight = InStr(PosRight + 1, XMLHttpRequest.responseText, Chr(34))
  158.  
  159. If PosRight > 0 Then
  160. If Mid(XMLHttpRequest.responseText, PosRight - 1, 1) = "\" Then
  161. UnescapedQuote = False
  162. Else
  163. Title = Mid(XMLHttpRequest.responseText, PosLeft + 1, PosRight - PosLeft - 1)
  164. UnescapedQuote = True
  165. End If
  166. Else
  167. GoTo Here1
  168. End If
  169. Loop Until UnescapedQuote = True
  170. End If
  171. End If
  172.  
  173. Here1:
  174. If Title = "" Then
  175. 'Set Title = JSON Details.Title if it exists
  176.  
  177. PosRight = InStr(1, XMLHttpRequest.responseText, Chr(34) & "titlelower" & Chr(34) & ":", vbTextCompare)
  178.  
  179. If PosRight > 0 Then
  180. PosLeft = InStrRev(XMLHttpRequest.responseText, Chr(34) & "title" & Chr(34) & ":", PosRight, vbTextCompare)
  181.  
  182. If PosLeft > 0 And PosRight > PosLeft Then
  183. PosLeft = PosLeft + 8
  184. TempTitle = Mid(XMLHttpRequest.responseText, PosLeft, PosRight - PosLeft)
  185. Pos = InStr(TempTitle, Chr(34))
  186.  
  187. If Pos > 0 Then
  188. TempTitle = Mid(TempTitle, Pos + 1)
  189. Pos = InStrRev(TempTitle, Chr(34))
  190.  
  191. If Pos > 0 Then Title = Mid(TempTitle, 1, Pos - 1)
  192. End If
  193. End If
  194. End If
  195. End If
  196.  
  197. Title = Replace(Title, "\" & Chr(34), Chr(34))
  198.  
  199. If InStr(XMLHttpRequest.responseText, "&quot;FAST PUBLISH&quot") > 0 Then
  200. PrependText = "***FAST PUBLISH***"
  201. If Title <> "" Then PrependText = PrependText & " "
  202. Title = PrependText & Title
  203. End If
  204.  
  205. URLSheet.Cells.Item(URLSheetRow, 3) = Title
  206.  
  207. Here2:
  208. Next URLSheetRow
  209. End Sub
  210.  
  211. Public Sub MakeHyperlinksOfSelectedURLs()
  212. Dim URLSheet As Worksheet
  213.  
  214.  
  215. Set URLSheet = Sheets("URLs")
  216. URLSheet.Activate
  217. If Selection Is Nothing Then Exit Sub
  218. If TypeName(Selection) <> "Range" Then Exit Sub
  219.  
  220. For URLSheetRow = Selection.Row To Selection.Row + Selection.Rows.Count - 1
  221. On Error Resume Next
  222. URLSheet.Hyperlinks.Add URLSheet.Cells.Item(URLSheetRow, 1), URLSheet.Cells.Item(URLSheetRow, 1).Value
  223. On Error GoTo 0
  224. Next URLSheetRow
  225. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement