<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2924490889467725074</id><updated>2018-02-22T14:53:33.957-08:00</updated><category term="Excel"/><category term="Cisco"/><category term="Python"/><category term="productivity"/><title type='text'>Tech Efficiency</title><subtitle type='html'>Give me six hours to chop down a tree and I will spend the first four sharpening the axe.&#xa; - Abraham Lincoln</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-5651247486450547635</id><published>2016-12-25T01:55:00.003-08:00</published><updated>2018-02-20T20:51:38.332-08:00</updated><title type='text'>Bash on Windows10</title><content type='html'>In other posts I talk about how how using basic bash utilities will help you be more efficient when doing most tasks at work. Here I talk about how you can set this up.&lt;br /&gt;&lt;br /&gt;The steps below explain how to enable Bash for Windows 10. I should note that this will require admin privileges. In most Enterprise environments you won&#39;t have admin rights and this may require special access to do.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-_Rfr8KcIMVc/Woz6I9YHu0I/AAAAAAABaow/cDM5XM7MWeAeLDaAgHox5Prei2bZWvSZQCEwYBhgL/s1600/Bash-new.sh-340x340.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;340&quot; data-original-width=&quot;340&quot; height=&quot;200&quot; src=&quot;https://2.bp.blogspot.com/-_Rfr8KcIMVc/Woz6I9YHu0I/AAAAAAABaow/cDM5XM7MWeAeLDaAgHox5Prei2bZWvSZQCEwYBhgL/s200/Bash-new.sh-340x340.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;Intalling Windows Subsystem for Linux&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Press the Windows Key&lt;/li&gt;&lt;li&gt;Type Features&lt;/li&gt;&lt;li&gt;Click &quot;Turn Windows Features on or off&quot;&lt;/li&gt;&lt;li&gt;Enter root password if prompted&lt;/li&gt;&lt;li&gt;In the dialog that appears click &quot;Windows Subsystem for Linux (Beta)&quot;&lt;/li&gt;&lt;li&gt;Click Ok&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Using Bash for the First Time&lt;/h3&gt;&lt;div&gt;Once the application is installed you can start using bash (bourne again shell). Bash is the shell, or command language interpreter, for the&amp;nbsp;&lt;small&gt;GNU&lt;/small&gt;&amp;nbsp;operating system and is extremely versatile and &lt;a href=&quot;http://www.infoworld.com/article/2893519/linux/perl-python-ruby-are-nice-bash-is-where-its-at.html&quot;&gt;powerful&lt;/a&gt;. If you&#39;re new to this (which you likely are if you are following this guide) then the power of bash may not be immediately obvious to you. I&#39;ll discuss this in detail in later posts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To start bash you can do either of the following&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Search for &quot;bash&quot; after hitting the Windows key&lt;/li&gt;&lt;li&gt;Hitting Windows+R to open the Run menu and typing &quot;bash&quot;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;A comment about interpreters&lt;/h3&gt;&lt;div&gt;By default the interpreter you will run &quot;C:\Windows\System32\bash.exe&quot; inside of is trash. It feels very similar to the command prompt interpreter. I immediately recommend you go and install &lt;a href=&quot;https://sourceforge.net/projects/conemu/&quot;&gt;ConEmu&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/5651247486450547635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2016/12/bash-on-windows10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/5651247486450547635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/5651247486450547635'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2016/12/bash-on-windows10.html' title='Bash on Windows10'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-_Rfr8KcIMVc/Woz6I9YHu0I/AAAAAAABaow/cDM5XM7MWeAeLDaAgHox5Prei2bZWvSZQCEwYBhgL/s72-c/Bash-new.sh-340x340.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-6386615617592716974</id><published>2016-12-16T00:37:00.000-08:00</published><updated>2018-02-22T14:49:56.325-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>The wrong tools</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-sPCaAiYRfNs/Woz7QwmBCyI/AAAAAAABao8/_Rp-Wqlv_bkIUrdx3uwWIBx-jLjCffXEQCPcBGAYYCw/s1600/Screenshot%2Bfrom%2B2018-02-20%2B23-52-49.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;418&quot; data-original-width=&quot;540&quot; height=&quot;247&quot; src=&quot;https://2.bp.blogspot.com/-sPCaAiYRfNs/Woz7QwmBCyI/AAAAAAABao8/_Rp-Wqlv_bkIUrdx3uwWIBx-jLjCffXEQCPcBGAYYCw/s320/Screenshot%2Bfrom%2B2018-02-20%2B23-52-49.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I preface this post by saying that I have spent my career working in Operations. As such, I spend a lot of time thinking about the tools I use and how to be efficient. &lt;b&gt;True efficiency necessitates that your workstation act as an extension of yourself&lt;/b&gt;. This means that your ability to execute actions should be able to closely track your train of thought. More succinctly, the latency between the idea &quot;I should grab the logs from this device&quot; and the moment you are executing that action should be brief.&lt;br /&gt;&lt;br /&gt;Ask yourself, how long does it take you to open a terminal? The answer to that question should be less than 1 second. How quickly can you be at the prompt of any remote device (router, VM, etc)? The correct answer here is no longer than the amount of time it would take you type the hostname.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;h3&gt;The Wrong Tools&lt;/h3&gt;In my experience network engineers working in larger institutions (generally internet service providers or big enterprise corporations) use primarily Microsoft Windows for their workstation or laptop. As a consequence of this, these engineers are primarily using tools like&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.putty.org/&quot;&gt;PuTTY&lt;/a&gt;&amp;nbsp;for SSH or TELNET &lt;span style=&quot;color: #6aa84f;&quot;&gt;(ugh)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://sourceforge.net/projects/puttymanager/&quot;&gt;PuTTY Connection Manager&lt;/a&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;(if you want to be &quot;efficient&quot;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.vandyke.com/products/securecrt/&quot;&gt;SecureCRT&lt;/a&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;(if you&#39;re wanting to go even fancier)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Some crappy third party FTP server and FTP client&lt;/li&gt;&lt;li&gt;Some crappy third party SCP client &lt;span style=&quot;color: #6aa84f;&quot;&gt;(if you&#39;re lucky, your crappy third party FTP client does this for you!)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;WinRAR and WinZIP &lt;span style=&quot;color: #6aa84f;&quot;&gt;(I guess Windows can do this for you nowadays, space age technology, I tell ya)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Microsoft Excel&lt;span style=&quot;color: #6aa84f;&quot;&gt; (it&#39;s already installed on your work computer, so why not use it for everything, right?)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;It&#39;s my contention that using any of the above software applications in your daily work as a network engineer is making you an inefficient engineer. Let&#39;s set aside the fact that having to download third party applications in order to do things as simple as SSH and SCP is crazy. The important point is that these functions are part of your day to day job. They should require zero thought to use and should be inter-operable.&lt;br /&gt;&lt;br /&gt;How much of &lt;b style=&quot;font-style: italic;&quot;&gt;your time &lt;/b&gt;would it take backup configs from a single endpoint. How about 100 endpoints? The answer shouldn&#39;t differ greatly. And if you thinking that you&#39;ll need to find an scp client that can consume a list of targets from a Excel .xlsx file, you&#39;re on the wrong track.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Right Tools&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;Largely the answer here is use a linux distribution as your primary operating system to perform your work. If your employer does not let you do this, kick and scream until they do. Other options include&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Mac OS &lt;span style=&quot;color: #38761d;&quot;&gt;(be careful of overly glossy buttons)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Windows 10 with Linux Bash Shell &lt;span style=&quot;color: #38761d;&quot;&gt;(is this a thing yet?)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Cygwin&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Once you&#39;re sitting within the warm glow of a linux shell, acquaint yourself with the below tools. All of these tools are older than you are and have withstood the test of time.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;awk&lt;/li&gt;&lt;li&gt;sed&lt;/li&gt;&lt;li&gt;grep&lt;/li&gt;&lt;li&gt;tr&lt;/li&gt;&lt;li&gt;scp&lt;/li&gt;&lt;li&gt;tar&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;Learn how to use command line editors like VI or EMACS. Then learn enough bash scripting so that you can chain all of these tools together without needing to read MAN pages. And lastly learn to not overdo it. That is, don&#39;t write bash scripts to when you&#39;re dealing with a problem that is sufficiently complex that you should be using a proper programming language. &amp;nbsp;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/6386615617592716974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2016/12/get-better-terminal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/6386615617592716974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/6386615617592716974'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2016/12/get-better-terminal.html' title='The wrong tools'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-sPCaAiYRfNs/Woz7QwmBCyI/AAAAAAABao8/_Rp-Wqlv_bkIUrdx3uwWIBx-jLjCffXEQCPcBGAYYCw/s72-c/Screenshot%2Bfrom%2B2018-02-20%2B23-52-49.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-7160441050558608035</id><published>2012-03-25T01:15:00.001-07:00</published><updated>2018-02-22T14:50:25.960-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><title type='text'>Excel User Defined Function for String Split - Split an IP Address by Octet</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s1600/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;700&quot; height=&quot;213&quot; src=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s320/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;I routinely find myself in a situation in Excel where I am having to use annoying string manipulation functions in order to extract a desired string from rows of text. Having some experience in Python and VBA the one function I end up missing the most is the &lt;b&gt;split function&lt;/b&gt;. Simply put, this function breaks up a string by a specified delimiter and returns an array of the results. This proves to be very useful.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;For example, say you want to break out the octets of multiple IP addreses. In order to accomplish this task in Excel you would have to use a combination of&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt; find()&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt; and &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;mid(&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;nbsp;functions. Although possible, this is time consuming and often requires a bit of tuning before you get exactly what you want.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Instead, try this UDF.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;bcell &amp;nbsp; &amp;nbsp; : A reference to a cell&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;delimiter : a string containing the character(s) you would like to use to split the input string by&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;index &amp;nbsp; &amp;nbsp; : which item from the resulting array you would like to return&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function stringsplit(bcell As Range, delimiter As String, _&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;index As Integer) As String&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;On Error GoTo errHandler&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Dim splitStr As Variant&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;We want index to start from 1, not 0&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;This is a more user friendly approach&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;If index = 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; GoTo errHandler&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;index = index - 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;varSplit = Split(bcell.Value, delimiter)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;StringSplit = varSplit(index)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Exit Function&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;errHandler:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; StringSplit = &quot;#N/A&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Here are some examples how we can use this in Excel. Let&#39;s assume A1 has the value &quot;192.168.1.254&quot; and we want to break out individual octets of this IP address.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;=stringsplit( A1, &quot;.&quot;, 1 )&lt;br /&gt;=192 &lt;br /&gt;&lt;br /&gt;=stringsplit( A1, &quot;.&quot;, 2 )&lt;br /&gt;=168&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;If you&#39;re looking for something that is more specialized for handling IP addresses you may be interested in the below function. Usage is simply, =octet(A1,2) returns the second octet. The findIP() support function is used in case the text you are trying to parse contains other characters.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;This function returns the value of a specified octet in an IP address&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;address : IP address stored as a string e.g. &quot;192.168.1.1&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;index &amp;nbsp; : integer value ranging from 1 to 4, specifying the octet to be returned&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function octet(address As String, index As Integer) As String&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Dim addSplit As Variant&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Catch some typical error cases&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;If index = 0 Or index &amp;gt; 4 Or FindIP(address) = &quot;&quot; Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; GoTo errHandler&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Use this offset to index the array&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;index = index - 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;addSplit = Split(FindIP(address), &quot;.&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Octet = Int(addSplit(index))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Exit Function&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;errHandler:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Octet = &quot;#N/A&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A support function that parses input strTest through a regular&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;expression to find an IP Address&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A blank value is returned if no IP address can be found&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function FindIP(strTest As String) As String&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Dim RegEx As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Dim valid As Boolean&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Dim Matches As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Dim i As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Set RegEx = CreateObject(&quot;VBScript.RegExp&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; RegEx.Pattern = &quot;\b(?:\d{1,3}\.){3}\d{1,3}\b&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; valid = RegEx.test(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; If valid Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Set Matches = RegEx.Execute(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FindIP = Matches(0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FindIP = &quot;&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/7160441050558608035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2012/03/excel-user-defined-function-for-string.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7160441050558608035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7160441050558608035'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2012/03/excel-user-defined-function-for-string.html' title='Excel User Defined Function for String Split - Split an IP Address by Octet'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s72-c/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-6136536917942892792</id><published>2011-10-26T11:26:00.000-07:00</published><updated>2018-02-22T13:42:41.665-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cisco"/><title type='text'>Using TFTP to copy a new IOS Image</title><content type='html'>&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-ADwI-kuxstk/Wo30zTvgkhI/AAAAAAABapw/Sm8T0139iocz4bsk8miGrfGUsQxm65gMgCLcBGAs/s1600/illuminated-server-room-panel-660495289-593b0a1c5f9b58d58a68b9b5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;512&quot; data-original-width=&quot;768&quot; height=&quot;266&quot; src=&quot;https://2.bp.blogspot.com/-ADwI-kuxstk/Wo30zTvgkhI/AAAAAAABapw/Sm8T0139iocz4bsk8miGrfGUsQxm65gMgCLcBGAs/s400/illuminated-server-room-panel-660495289-593b0a1c5f9b58d58a68b9b5.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Copying a new IOS version to      a cisco device can done in a variety of ways, the below shows one such      method&lt;/span&gt; &lt;br /&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;direction: ltr; font-family: Calibri; font-size: 11.0pt; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;&quot; type=&quot;1&quot;&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Connect the port Fa0/2 of the device to your computer      with an ethernet cable &lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;2&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Change your computer IPv4      settings&lt;/span&gt;&lt;/li&gt;&lt;ol style=&quot;direction: ltr; font-family: Calibri; font-size: 11.0pt; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;&quot; type=&quot;a&quot;&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;192.168.1.1/24 instead of automatically detect&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;ol style=&quot;direction: ltr; font-family: Calibri; font-size: 11.0pt; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;&quot; type=&quot;1&quot;&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;3&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Turn off any firewall or policy settings on your      computer that may prevent your computer being a TFTP server&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;4&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Run SolarWinds TFTP Server (or any TFTP server application of your choice)&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;5&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Start the TFTP Service&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;6&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;On the device use the below      configuration&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;en&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;conf t&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;vlan 2&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;exit&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;int vlan 2&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;ip address 192.168.1.2 255.255.255.0&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;no shut&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;exit&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;int fa0/2&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;switchport access vlan 2&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;end&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;wr me&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;direction: ltr; font-family: Calibri; font-size: 11.0pt; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;&quot; type=&quot;1&quot;&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;7&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Do a test ping between the computer and the cisco device      to test connectivity&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;8&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Perform a TFTP copy command      on the device&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div lang=&quot;en-US&quot; style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;copy tftp flash&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;192.168.1.1&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;c2960-lanbasek9-mz.122-58.SE2.bin&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;c2960-lanbasek9-mz.122-58.SE2.bin&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;direction: ltr; font-family: Calibri; font-size: 11.0pt; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;&quot; type=&quot;1&quot;&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;9&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;Do a &lt;i&gt;show flash&lt;/i&gt; if you want to verify the file was      copied&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0; margin-top: 0; vertical-align: middle;&quot; value=&quot;10&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-size: 11pt;&quot;&gt;To boot from the new flash      you would use the below configuration commands&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;conf t&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;boot-start-marker&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;boot system flash:c2960-lanbasek9-mz.122-58.SE2.bin&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;boot-end-marker&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;end&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;wr mem&lt;/div&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; font-style: italic; margin-left: .375in; margin: 0in;&quot;&gt;reload&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/6136536917942892792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2011/10/using-tftp-to-copy-new-ios-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/6136536917942892792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/6136536917942892792'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2011/10/using-tftp-to-copy-new-ios-image.html' title='Using TFTP to copy a new IOS Image'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-ADwI-kuxstk/Wo30zTvgkhI/AAAAAAABapw/Sm8T0139iocz4bsk8miGrfGUsQxm65gMgCLcBGAs/s72-c/illuminated-server-room-panel-660495289-593b0a1c5f9b58d58a68b9b5.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-2415641845043534800</id><published>2011-09-22T16:09:00.000-07:00</published><updated>2018-02-22T14:53:34.123-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Query Access Database (MDB) from Python</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-eRI8wJejc9Q/Wo9J0DxHSXI/AAAAAAABaq0/x7WzIUCjz2IfQnxz4kaVmmLbgucR2AqcwCLcBGAs/s1600/Python%2BWallpaper%2B-%2BImgur.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;828&quot; data-original-width=&quot;1600&quot; height=&quot;164&quot; src=&quot;https://3.bp.blogspot.com/-eRI8wJejc9Q/Wo9J0DxHSXI/AAAAAAABaq0/x7WzIUCjz2IfQnxz4kaVmmLbgucR2AqcwCLcBGAs/s320/Python%2BWallpaper%2B-%2BImgur.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ever wish that you could quickly run a query against an Access database (MDB) from a command line? If you&#39;re already working within a command line this can be very efficient to do a quick lookup. Here&#39;s how this can be accomplished.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/pyodbc/&quot;&gt;Install pyodbc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Copy the lookup.py code into a file and edit the MDB and SQL variables to suit your needs&lt;/li&gt;&lt;li&gt;Copy the lookup.bat file into a file (you may need to edit the path to point to lookup.py)&lt;/li&gt;&lt;li&gt;You should save lookup.bat to a folder that is within your Windows Path&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;lookup.py&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;import sys, csv&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;import pyodbc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;# Handle command line arguments&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;if len(sys.argv) == 1:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Enter usage notes here&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;(use % for wildcard)&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;print &quot;Searching for &#39;%s&#39;&quot; % sys.argv[1] &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;print &quot;&quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;# Query the CLLI MDB&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;MDB&amp;nbsp; = &quot;PATH TO MDB&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;DRV&amp;nbsp; = &quot;{Microsoft Access Driver (*.mdb)}&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;conn = pyodbc.connect(&quot;DRIVER=%s;DBQ=%s&quot; % (DRV,MDB))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;curs = conn.cursor()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;SQL&amp;nbsp; = &quot;SELECT * FROM table WHERE col=&#39;%s&#39;&quot; % sys.argv[1] &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;curs.execute(SQL)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;rows = curs.fetchall()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;curs.close()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;conn.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;# Print out results&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;i = 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;for row in rows:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Result #%s&quot; % i&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;--------------------------&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for col in row:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print col&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;&quot; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;lookup.bat&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;@call python.exe lookup.py %1 &lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/2415641845043534800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2011/09/command-line-query-mdb-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/2415641845043534800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/2415641845043534800'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2011/09/command-line-query-mdb-python.html' title='Query Access Database (MDB) from Python'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-eRI8wJejc9Q/Wo9J0DxHSXI/AAAAAAABaq0/x7WzIUCjz2IfQnxz4kaVmmLbgucR2AqcwCLcBGAs/s72-c/Python%2BWallpaper%2B-%2BImgur.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-7015705462534889416</id><published>2011-09-20T15:46:00.000-07:00</published><updated>2018-02-22T13:41:58.778-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><title type='text'>Excel User Defined Function for Ping</title><content type='html'>&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s1600/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;700&quot; height=&quot;213&quot; src=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s320/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here&#39;s another Excel UDF that I&#39;m sharing with everyone. This User Defined Function allows a user to execute a Windows ping command from an Excel cell. Currently this code is written to parse a string for an IP Address and ping that address (that&#39;s the desired effect I was looking for). If you wish to ping hostnames as well, you can make the following subsitution&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Old: retVal = sPing(FindIP(sHost), 1, 200)&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;New: retVal = sPing(sHost, 1, 200) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some examples of how to use the UDF and the code itself. &lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;Ex. =ping(&quot;192.168.1.0&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;returns average ms response time&lt;/div&gt;Ex. =ping(&quot;192.168.1.0&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;returns received ICMP packets&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Ping UDF&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A ping function formatted for use as an Excel cell formula&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sHost - the host to be pinged&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;selectVal - optional parameter that defines what should be returned&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - refer to sPing return type for clarification of what&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value to be used&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #6aa84f; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - the default return is the millisecond average ping time&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function Ping(sHost As String, Optional selectVal As Integer) As String&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Dim retVal As Variant&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;retVal = sPing(FindIP(sHost), 1, 200)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;If retVal(1) &amp;lt;&amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If selectVal = 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ping = retVal(4)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ping = retVal(selectVal)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ping = &quot;#N/A&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Find IP Address&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A support function that parses input strTest through a regular&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;expression to find an IP Address&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #6aa84f; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A blank value is returned if no IP address can be found&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function FindIP(strTest As String) As String&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim RegEx As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim valid As Boolean&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Matches As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set RegEx = CreateObject(&quot;VBScript.RegExp&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.Pattern = &quot;\b(?:\d{1,3}\.){3}\d{1,3}\b&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = RegEx.test(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If valid Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set Matches = RegEx.Execute(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FindIP = Matches(0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FindIP = &quot;&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Ping Support Function&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;This function runs a cmd ping request&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;sHost&amp;nbsp;&amp;nbsp;&amp;nbsp; - the host to be pinged&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;numPings - the number of ICMP ping packets to send&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;msDelay&amp;nbsp; - the ping timeout delay&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;The return value from this function is an array with the following&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;values defined&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(0) - Transmitted ICMP Packets&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(1) - Received ICMP Packets&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(2) - Lost ICMP Packets&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(3) - Maximum Round Trip Time&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(4) - Average Round Trip Time&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #6aa84f; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;sPing(5) - Comments&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function sPing(sHost As String, numPings As Integer, msDelay As Integer) As Variant&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim oFSO As Object, oShell As Object, oTempFile As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sLine As String, sFilename As String&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim retVal(5) As String&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oShell = CreateObject(&quot;Wscript.Shell&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sFilename = oFSO.GetTempName&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oShell.Run &quot;cmd /c ping -n &quot; &amp;amp; numPings &amp;amp; &quot; -w &quot; &amp;amp; msDelay &amp;amp; &quot; &quot; &amp;amp; sHost &amp;amp; &quot; &amp;gt; &quot; &amp;amp; sFilename, 0, True&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oTempFile = oFSO.OpenTextFile(sFilename, 1)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While oTempFile.AtEndOfStream &amp;lt;&amp;gt; True&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sLine = oTempFile.Readline&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmdStr = cmdStr &amp;amp; Trim(sLine)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oTempFile.Close&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oFSO.DeleteFile (sFilename)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If cmdStr = &quot;IP address must be specified.&quot; Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(5) = &quot;IP address must be specified&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sPing = retVal&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Function&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If InStr(1, cmdStr, &quot;Ping request could not find host&quot;, vbTextCompare) &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(6) = &quot;Could not find host&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sPing = retVal&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Function&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txLoc = InStr(1, cmdStr, &quot;Sent = &quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If txLoc &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txLoc = txLoc + 7&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txLoc2 = InStr(txLoc, cmdStr, &quot;,&quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(0) = Trim(Mid(cmdStr, txLoc, txLoc2 - txLoc))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxLoc = InStr(1, cmdStr, &quot;Received = &quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If rxLoc &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxLoc = rxLoc + 11&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxLoc2 = InStr(rxLoc, cmdStr, &quot;,&quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(1) = Trim(Mid(cmdStr, rxLoc, rxLoc2 - rxLoc))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ltLoc = InStr(1, cmdStr, &quot;Lost = &quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If ltLoc &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ltLoc = ltLoc + 7&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ltLoc2 = InStr(ltLoc, cmdStr, &quot;(&quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(2) = Trim(Mid(cmdStr, ltLoc, ltLoc2 - ltLoc))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxLoc = InStr(1, cmdStr, &quot;Maximum = &quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If maxLoc &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxLoc = maxLoc + 10&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxLoc2 = InStr(maxLoc, cmdStr, &quot;ms&quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(3) = Trim(Mid(cmdStr, maxLoc, maxLoc2 - maxLoc))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aveLoc = InStr(1, cmdStr, &quot;Average = &quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If aveLoc &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aveLoc = aveLoc + 10&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aveLoc2 = InStr(aveLoc, cmdStr, &quot;ms&quot;, vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal(4) = Trim(Mid(cmdStr, aveLoc, aveLoc2 - aveLoc))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sPing = retVal&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/7015705462534889416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2011/09/excel-user-defined-function-for-ping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7015705462534889416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7015705462534889416'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2011/09/excel-user-defined-function-for-ping.html' title='Excel User Defined Function for Ping'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s72-c/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-7119212273571934845</id><published>2011-09-19T14:10:00.000-07:00</published><updated>2018-02-22T13:43:36.422-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><title type='text'>Excel User Defined Function for CIDR Subnet Mask Notation</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s1600/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;700&quot; height=&quot;213&quot; src=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s320/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here&#39;s another one of the Excel UDF&#39;s I have prepared for performing network operations in Excel. I find it specifically useful when dealing with large data sets. This function converts a subnet mask to CIDR notation. It is implemented with statically defining a dictionary object. It may not be an elegant solution, but it is works.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ex. CIDR(&quot;255.128.0.0&quot;)=9&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&#39;--------------------------------------------&lt;br /&gt;&#39;CIDR (Classless Inter-Domain Routing)&lt;br /&gt;&#39;--------------------------------------------&lt;br /&gt;&#39;Given an inputStr value containing a subnet mask in an IP&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;color: #38761d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&#39;format this functio returns the corresponding subnet mask&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&#39;in CIDR Notation&lt;/div&gt;&lt;b&gt;Function cidr(inputStr As String)&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim maskDict As Dictionary&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set maskDict = New Dictionary&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;128.0.0.0&quot;, 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;192.0.0.0&quot;, 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;224.0.0.0&quot;, 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;240.0.0.0&quot;, 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;248.0.0.0&quot;, 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;252.0.0.0&quot;, 6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;254.0.0.0&quot;, 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.0.0.0&quot;, 8&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.128.0.0&quot;, 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.192.0.0&quot;, 10&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.224.0.0&quot;, 11&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.240.0.0&quot;, 12&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.248.0.0&quot;, 13&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.252.0.0&quot;, 14&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.254.0.0&quot;, 15&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.0.0&quot;, 16&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.128.0&quot;, 17&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.192.0&quot;, 18&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.224.0&quot;, 19&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.240.0&quot;, 20&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.248.0&quot;, 21&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.252.0&quot;, 22&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.254.0&quot;, 23&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.0&quot;, 24&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.128&quot;, 25&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.192&quot;, 26&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.224&quot;, 27&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.240&quot;, 28&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.248&quot;, 29&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.252&quot;, 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.254&quot;, 31&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maskDict.Add &quot;255.255.255.255&quot;, 32&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cidr = maskDict.Item(FindIP(inputStr))&lt;br /&gt;End Function&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;Find IP Address&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A support function that parses input strTest through a regular&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;expression to find an IP Address&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #38761d; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&#39;A blank value is returned if no IP address can be found&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Function FindIP(strTest As String) As String&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim RegEx As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim valid As Boolean&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Matches As Object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set RegEx = CreateObject(&quot;VBScript.RegExp&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.Pattern = &quot;\b(?:\d{1,3}\.){3}\d{1,3}\b&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = RegEx.test(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If valid Then&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set Matches = RegEx.Execute(strTest)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FindIP = Matches(0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FindIP = &quot;&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;End Function&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/7119212273571934845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2011/09/excel-user-defined-function-for-cidr.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7119212273571934845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/7119212273571934845'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2011/09/excel-user-defined-function-for-cidr.html' title='Excel User Defined Function for CIDR Subnet Mask Notation'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABapo/I9BvEStpIhoTH336b5w1Ix_ix7X036fgQCEwYBhgL/s72-c/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924490889467725074.post-403003530046533823</id><published>2011-08-01T23:36:00.000-07:00</published><updated>2018-02-22T14:50:54.876-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><title type='text'>Excel User Defined Function - nslookup</title><content type='html'>&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s1600/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;700&quot; height=&quot;213&quot; src=&quot;https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s320/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Recently I have found myself in a position where I needed to run basic networking commands on numerous remote devices. At the end of the day I often found myself with several command prompts or cygwin bash shells open where I had to run umpteen &lt;b&gt;nslookup&lt;/b&gt;&lt;b&gt; &lt;/b&gt;commands.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;It didn&#39;t take long for me to find this whole process entirely unsatisfactory. I wanted to a way to run these commands very quickly and have the results returned in a place that I could refer to afterwards. I turned to the internet and ultimately did not find a simple, free, trustworthy utility that I could use to serve this purpose.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I turned to Excel and decided to write a user defined function that completes an nslookup command. The function has two parameters as described below:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;b&gt;nslookup( lookupVal, [addressOpt] )&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;lookupVal&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;: represents the hostname or ip address that you wish to lookup &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;addressOpt&lt;/b&gt;: An integer that can have one of the values below&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;border-collapse: collapse; border: none; mso-border-insideh: none; mso-border-insidev: none; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0;&quot;&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 62.1pt;&quot; valign=&quot;top&quot; width=&quot;83&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;&amp;lt;blank&amp;gt;&lt;/span&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 416.7pt;&quot; valign=&quot;top&quot; width=&quot;556&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;Auto Detect&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 1;&quot;&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 62.1pt;&quot; valign=&quot;top&quot; width=&quot;83&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 416.7pt;&quot; valign=&quot;top&quot; width=&quot;556&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;Auto Detect&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 2;&quot;&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 62.1pt;&quot; valign=&quot;top&quot; width=&quot;83&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;1&lt;/span&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 416.7pt;&quot; valign=&quot;top&quot; width=&quot;556&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;Forced Address Lookup&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 3; mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 62.1pt;&quot; valign=&quot;top&quot; width=&quot;83&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;2&lt;/span&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 5.4pt 0cm 5.4pt; width: 416.7pt;&quot; valign=&quot;top&quot; width=&quot;556&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;Forced Name Lookup&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; Here&#39;s some examples of how to run the code&lt;/span&gt; &lt;/div&gt;&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;=nslookup(&quot;hostname&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;=nslookup(&quot;148.175.254.250&quot;)&lt;br /&gt;=nslookup(&quot;www.google.com&quot;,1)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;=nslookup(&quot;149.175.254.240&quot;,2)&lt;br /&gt;=nslookup(B1)&lt;/span&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;The full Excel UDF is shown below. In order to get this function working properly you should save copy this code into a module, save the Excel File as an &lt;i&gt;.xlam&lt;/i&gt; file, and add the file as an Add-in to Excel. A subsequent blog post will detail this process.&lt;/div&gt;&lt;br /&gt;&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Public&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Function&lt;/span&gt; NSLookup&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;lookupVal &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; Optional addressOpt &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Integer&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Const&lt;/span&gt; ADDRESS_LOOKUP &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Const&lt;/span&gt; NAME_LOOKUP &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;2&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Const&lt;/span&gt; AUTO_DETECT &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Skip everything if the field is blank&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; lookupVal &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; oFSO &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; oShell &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; oTempFile &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; sLine &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; sFilename &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; intFound &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Integer&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Set&lt;/span&gt; oFSO &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;CreateObject&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Scripting.FileSystemObject&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Set&lt;/span&gt; oShell &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;CreateObject&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Wscript.Shell&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Handle the addresOpt operand&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Regular Expressions are used to complete a substring match for an IP Address&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;If an IP Address is found, a DNS Name Lookup will be forced&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; AUTO_DETECT &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;            ipLookup &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; FindIP&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;lookupVal&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; ipLookup &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;                addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; ADDRESS_LOOKUP&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;                addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; NAME_LOOKUP&lt;br /&gt;                lookupVal &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; ipLookup&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Do a regular expression substring match for an IP Address&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;ElseIf&lt;/span&gt; addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; NAME_LOOKUP &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;            lookupVal &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; FindIP&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;lookupVal&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Run the nslookup command&lt;/span&gt;&lt;br /&gt;        sFilename &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; oFSO&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;GetTempName&lt;br /&gt;        oShell&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;Run &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;cmd /c nslookup &quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; lookupVal &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot; &amp;gt; &quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; sFilename&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0f4d75;&quot;&gt;True&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Set&lt;/span&gt; oTempFile &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; oFSO&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;OpenTextFile&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sFilename&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Do&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;While&lt;/span&gt; oTempFile&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;AtEndOfStream &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0f4d75;&quot;&gt;True&lt;/span&gt;&lt;br /&gt;            sLine &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; oTempFile&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;Readline&lt;br /&gt;            cmdStr &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; cmdStr &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Trim&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sLine&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;&amp;amp;&lt;/span&gt; vbCrLf&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Loop&lt;/span&gt;&lt;br /&gt;        oTempFile&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Close&lt;/span&gt;&lt;br /&gt;        oFSO&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;DeleteFile &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sFilename&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;Process the result&lt;/span&gt;&lt;br /&gt;        intFound &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Name:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; intFound &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;            NSLookup &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;NotFound&quot;&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Exit&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Function&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;ElseIf&lt;/span&gt; intFound &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: dimgrey;&quot;&gt;&#39;TODO: Cleanup with RegEx&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; ADDRESS_LOOKUP &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;                loc1 &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;intFound&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Address:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;intFound&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Addresses:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;                loc2 &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;loc1&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbCrLf&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;                nameStr &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Trim&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Mid&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; loc1 &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; loc2 &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; loc1 &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;ElseIf&lt;/span&gt; addressOpt &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; NAME_LOOKUP &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;                loc1 &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;intFound&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Name:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;                loc2 &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;InStr&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;loc1&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbCrLf&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; vbTextCompare&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;                nameStr &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Trim&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Mid&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;cmdStr&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; loc1 &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; loc2 &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; loc1 &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;        NSLookup &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; nameStr&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;        NSLookup &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;N/A&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Function&lt;/span&gt; FindIP&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;strTest &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; RegEx &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; valid &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Boolean&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; Matches &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; i &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Integer&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Set&lt;/span&gt; RegEx &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;CreateObject&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;VBScript.RegExp&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    RegEx&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;Pattern &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;\b(?:\d{1,3}\.){3}\d{1,3}\b&quot;&lt;/span&gt;&lt;br /&gt;    valid &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; RegEx&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;test&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;strTest&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt; valid &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Set&lt;/span&gt; Matches &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; RegEx&lt;span style=&quot;color: #008c00;&quot;&gt;.&lt;/span&gt;Execute&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;strTest&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;        FindIP &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; Matches&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;        FindIP &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayteknews.blogspot.com/feeds/403003530046533823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jayteknews.blogspot.com/2011/08/excel-user-defined-function-nslookup.html#comment-form' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/403003530046533823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924490889467725074/posts/default/403003530046533823'/><link rel='alternate' type='text/html' href='http://jayteknews.blogspot.com/2011/08/excel-user-defined-function-nslookup.html' title='Excel User Defined Function - nslookup'/><author><name>Jay</name><uri>http://www.blogger.com/profile/04959784834366796302</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-drEvarTo0n0/Wo3zpc7QanI/AAAAAAABaps/fGJu60jzLogB0Yn54PCozHnrjxCEGcVrwCPcBGAYYCw/s72-c/cw_cheat_sheet_microsoft_excel_2016_a-100720988-large.jpg" height="72" width="72"/><thr:total>36</thr:total></entry></feed>