0

I have a form that I convert to PDF and Dir() to a SharePoint online group.

Periodically, there are connection errors. I go to SharePoint and click "View in File Explorer" under "all Documents" in my document library to reestablish the ability to upload files.

I made a sub to open SharePoint in File Explorer via Shell method, but it only functions if I click on "View in File Explorer".

How can I either A work around other than opening the page and clicking "View..." or B actually click the button?

I cycle through the elements, but the button doesn't appear. I get object required or object not set errors.

<li class="ms-ContextualMenu-item item-421" role="presentation"><button name="View in File Explorer" tabindex="0" class="ms-ContextualMenu-link root-453" role="menuitem" aria-disabled="false" aria-posinset="4" aria-setsize="8"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">View in File Explorer</span></div></button></li>

Here is the html for All Documents

<button name="All Documents" tabindex="0" title="Switch view options" class="ms-Button ms-Button--commandBar ms-Button--hasMenu ms-CommandBarItem-link root-189" role="menuitem" aria-expanded="false" aria-haspopup="true" aria-label="Switch view options" type="button" data-automationid="switchLayoutCommand" data-is-focusable="true"><span class="ms-Button-flexContainer flexContainer-185" data-automationid="splitbuttonprimary"><i class="ms-Icon root-33 css-77 ms-Button-icon icon-190" role="presentation" aria-hidden="true" data-icon-name="list"></i><span class="ms-Button-textContainer textContainer-186"><span class="ms-Button-label label-191" id="id__117">All Documents</span></span><i class="ms-Icon root-33 css-77 ms-Button-menuIcon menuIcon-74" role="presentation" aria-hidden="true" data-icon-name="ChevronDown"></i></span></button>

Here is the code:

Sub filexplorer2()

Dim IE As New SHDocVw.InternetExplorerMedium

Dim HTMLDoc As MSHTML.HTMLDocument

With IE
    .Visible = True
    .navigate "https://nov.sharepoint.com/teams/WBTuboscopeCoatingEngineering/POR%20Requests/Forms/AllItems.aspx"
    Do Until .ReadyState = 4: DoEvents: Loop
End With

Set HTMLDoc = IE.Document

HTMLDoc.getElementsByClassName("ms-ContextualMenu-link root-453").Click

Set IE = Nothing
Set HTMLDoc = Nothing
End Sub

<body><link rel="preconnect" href="https://spoprod-a.akamaihd.net" crossorigin="">

Here is the path:

<div class="ms-Layer ms-Layer--fixed root-460" data-portal-element="true">
  <div class="ms-Fabric ms-Layer-content content-462">
    <div class="ms-Callout-container container-463">
      <div tabindex="-1" class="ms-Callout ms-ContextualMenu-Callout root-464 css-38" style="right: 285.03px; bottom: -438px;">
        <div class="ms-Callout-main calloutMain-467" style="max-height: 430px;">
          <div tabindex="0" class="ms-ContextualMenu-container container-417" id="id__117-menu" aria-labelledby="id__117">
            <div class="ms-FocusZone css-96 ms-ContextualMenu is-open ms-BaseButton-menuhost root-416" data-focuszone-id="FocusZone701">
              <ul class="ms-ContextualMenu-list is-open list-418" role="menu">
                <li title="View items and details in a list" class="ms-ContextualMenu-item item-421" role="presentation"><button name="List" tabindex="-1" title="View items and details in a list" class="ms-ContextualMenu-link is-checked root-443" role="menuitemcheckbox" aria-checked="true" aria-disabled="false" aria-posinset="1" aria-setsize="8" data-automationid="detailsListCommand"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-ContextualMenu-checkmarkIcon checkmarkIcon-468" aria-hidden="true" data-icon-name="CheckMark"></i><i class="ms-ContextualMenu-icon icon-469" aria-hidden="true" data-icon-name="list"></i><span class="ms-ContextualMenu-itemText label-433">List</span></div></button></li>
                <li
                  title="View items and details in a compact list" class="ms-ContextualMenu-item item-421" role="presentation"><button name="Compact List" tabindex="-1" title="View items and details in a compact list" class="ms-ContextualMenu-link root-453" role="menuitemcheckbox" aria-checked="false" aria-disabled="false" aria-posinset="2" aria-setsize="8" data-automationid="compactDetailsListCommand"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-469" aria-hidden="true" data-icon-name="alignleft"></i><span class="ms-ContextualMenu-itemText label-433">Compact List</span></div></button></li>
                  <li
                    title="View items with tile previews" class="ms-ContextualMenu-item item-421" role="presentation"><button name="Tiles" tabindex="0" title="View items with tile previews" class="ms-ContextualMenu-link root-453" role="menuitemcheckbox" aria-checked="false" aria-disabled="false" aria-posinset="3" aria-setsize="8" data-automationid="tilesListCommand"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-471" aria-hidden="true" data-icon-name="viewall"></i><span class="ms-ContextualMenu-itemText label-433">Tiles</span></div></button></li>
                    <li
                      class="ms-ContextualMenu-item item-421" role="presentation"><button name="View in File Explorer" tabindex="0" class="ms-ContextualMenu-link root-453" role="menuitem" aria-disabled="false" aria-posinset="4" aria-setsize="8"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">View in File Explorer</span></div></button></li>
                      <li
                        class="ms-ContextualMenu-divider divider-422" role="separator" aria-hidden="true"></li>
                        <li class="ms-ContextualMenu-item item-421" role="presentation"><button name="All Documents" tabindex="-1" class="ms-ContextualMenu-link is-checked root-443" role="menuitemcheckbox" aria-checked="true" aria-disabled="false" aria-posinset="5" aria-setsize="8" data-automationid="switchViewCommand_577caa38-1e30-445a-b551-84ccc1d84c90"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-ContextualMenu-checkmarkIcon checkmarkIcon-468" aria-hidden="true" data-icon-name="CheckMark"></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">All Documents</span></div></button></li>
                        <li
                          class="ms-ContextualMenu-divider divider-422" role="separator" aria-hidden="true"></li>
                          <li class="ms-ContextualMenu-item item-421" role="presentation"><button name="Save view as" tabindex="-1" class="ms-ContextualMenu-link root-453" role="menuitem" aria-disabled="false" aria-posinset="6" aria-setsize="8" data-automationid="saveCommand"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">Save view as</span></div></button></li>
                          <li
                            class="ms-ContextualMenu-item item-421" role="presentation"><button name="Edit current view" tabindex="-1" class="ms-ContextualMenu-link root-453" role="menuitem" aria-disabled="false" aria-posinset="7" aria-setsize="8" data-automationid="customizeViewCommand"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">Edit current view</span></div></button></li>
                            <li
                              class="ms-ContextualMenu-item item-421" role="presentation"><button name="Format current view" tabindex="-1" class="ms-ContextualMenu-link root-453" role="menuitem" aria-disabled="false" aria-posinset="8" aria-setsize="8"><div class="ms-ContextualMenu-linkContent linkContent-427"><i class="ms-Icon-placeHolder ms-ContextualMenu-checkmarkIcon checkmarkIcon-470" aria-hidden="true" data-icon-name=""></i><i class="ms-ContextualMenu-icon icon-472" aria-hidden="true"></i><span class="ms-ContextualMenu-itemText label-433">Format current view</span></div></button></li>
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Picture of HTML Path
enter image description here

Community
  • 1
  • 1
Pbunyan22
  • 1
  • 2

1 Answers1

0

Some things to note:

  1. Currently you are attempting a method of a node (click) on a collection as getElementsByClassName returns a collection of elements.

You would need to use the appropriate index for the item of interest in the collection e.g.

HTMLDoc.getElementsByClassName("ms-ContextualMenu-link root-453")(0).Click

You might also consider using css selectors to match

HTMLDoc.querySelector(".root-453").click

Or

HTMLDoc.querySelector("[name='View in File Explorer']").click
  1. It is possible though that the button is in shadow DOM in which case things get more complicated. We would need to see more of the HTML. I discuss it a little here.

  2. Another possibility is that your element may be inside a frame/iframe.

  3. Use a proper page load wait after .Navigate i.e.

    While .Busy Or .ReadyState <> 4: DoEvents: Wend

QHarr
  • 83,427
  • 12
  • 54
  • 101