VBScript to read from Excel, search AD and put a value back into Excel
I have an Excel spreadsheet that contains a list of hired and terminated Employees. What I would like to do is take the employeeid from only the terminated employees, search AD, and return whether the account is locked/unlocked, disabled/enable, distinguishedName
and expiration date.
So far, it all works until after "Do Until objExcel.Cells(intRow, 1).Value = """. If I comment out "on error resume next", the script never responds with "Wscript.Echo objRS.Fields("distinguishedName")".
I've also tried "Wscript.Echo objRS.Fields("distinguishedName").Value", and that also produces an error (Item cannot be found in the collection corresponding to the requested name or ordinal).
Any assistance to get my script working would be greatly appreciated!
Const ADS_SCOPE_SUBTREE = 2
Const ADS_UF_ACCOUNTDISABLE = 2
On Error Resume Next
' Get the domain string ("dc=domain, dc=local")
strDomain = GetObject("LDAP://rootDSE").Get("defaultNamingContext")
' ADODB connection to AD
Set objConnection = CreateObject("ADODB.Connection")
' Connect
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim shell : Set shell = CreateObject("Shell.Application")
Dim file : Set file = shell.BrowseForFolder(0, "Choose a file:", &H4000)
strTermString = "Termed"
strFilePath = objFSO.GetParentFolderName(strFile)
strFileName = objFSO.GetFileName(strFile)
Set objFile = objFSO.GetFile(strFile)
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(strFile)
Set objWorksheet = objExcel.ActiveWorkbook.Worksheets(1)
Set objRange = objWorksheet.UsedRange
Set objTarget = objRange.Find(strTermString)
If Not objTarget Is Nothing Then
WScript.Echo objTarget.AddressLocal(False,False)
strRowStart = objTarget.Row
strFirstAddress = objTarget.AddressLocal(False,False)
End If
Do Until (objTarget Is Nothing)
Set objTarget = objRange.FindNext(objTarget)
strHolder = objTarget.AddressLocal(False,False)
If strHolder = strFirstAddress Then
Exit Do
End If
WScript.Echo objTarget.AddressLocal(False,False)
Loop
'objExcel.Visible = True
' add one or else we search for termed
intRow = strRowStart + 1
intCol = 1
intID = 0
Do Until objExcel.Cells(intRow, 1).Value = ""
strEmployeeID = objExcel.Cells(intRow,intCol)
WScript.Echo strEmployeeID
objCommand.CommandText = "SELECT * FROM 'LDAP://" & strDomain & "' WHERE employeeid = '" & strEmployeeID & "' AND objectClass = 'user'"
Set objRS = objCommand.Execute
While Not objRS.EOF
intUAC=objRecordset.Fields("userAccountControl")
Wscript.Echo objRS.Fields("distinguishedName")
If intUAC AND ADS_UF_ACCOUNTDISABLE Then
objExcel.Cells(intRow, 20) = "Disabled"
objExcel.Cells(intRow, 1).EntireRow.interior.ColorIndex = 4
End If
Wend
intRow = intRow + 1
Loop
A good part of you script makes no sense. YOu are opening the file as a text file and as a spreadsheet. Why?
You have at least two distinct issues:
1. Get information from Excel
2. Check information in AD.
I recommend creating and testing separate steps for thes then combine them when you understand how to make this work.
Here is a way to simplify and debug. After you get the |Excel navigatiuon fixed then uncomment the AD function code.
I have no idea what the first few bits of code are attempting to do since we have no idea what you spreadsheet looks like.,
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(strFile)
Set objWorksheet = objExcel.ActiveWorkbook.Worksheets(1)
Set objRange = objWorksheet.UsedRange
Set objTarget = objRange.Find(strTermString)
If Not objTarget Is Nothing Then
WScript.Echo objTarget.AddressLocal(False,False)
strRowStart = objTarget.Row
strFirstAddress = objTarget.AddressLocal(False,False)
End If
Do Until (objTarget Is Nothing)
Set objTarget = objRange.FindNext(objTarget)
strHolder = objTarget.AddressLocal(False,False)
If strHolder = strFirstAddress Then
Exit Do
End If
WScript.Echo objTarget.AddressLocal(False,False)
Loop
intRow = strRowStart + 1
intCol = 1
Do Until objExcel.Cells(intRow, 1).Value = ""
strEmployeeID = objExcel.Cells(intRow,intCol)
WScript.Echo strEmployeeID
Set objRS = objCommand.Execute
While Not objRS.EOF
WScript.Echo strEmployeeID
'If CheckIfUserDisabled(strEmployeeID) Then
' objExcel.Cells(intRow, 20) = "Disabled"
'objExcel.Cells(intRow, 1).EntireRow.interior.ColorIndex = 4
' End IfIf
Wend
intRow = intRow + 1
Loop
Function CheckIfUserDisabled(strEmployeeID)
Const ADS_UF_ACCOUNTDISABLE = 2
strDomain = GetObject("LDAP://rootDSE").Get("defaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set rs = objConnection.Execute( "SELECT * FROM 'LDAP://" & strDomain & "' WHERE employeeid = '" & strEmployeeID & "'")
While Not rs.EOF
If rs.objRecordset.Fields("userAccountControl") AND ADS_UF_ACCOUNTDISABLE Then
CheckIfUserDisabled = True
End If
rs.MoveNext
Wend
End Function
¯\_(ツ)_/¯
Similar Messages
-
Read from a .db file and use the values within a program
each account has 3 values.. (password, balance,id_number)
my .db file contains the following.
pass201 250 9885 pass202 300 5547 pass203 700 1123
(this is 3 accounts)
I need to be able to read from this file and use each attribute within my program... HELP!String[][] accounts = null;
try
// Open a file input stream
FileInputStream fileContents = new FileInputStream("filename");
byte[] data = new byte[fileContents.available()];
fileContents.read(data);
fileContents.close();
String contents = new String(data);
StringTokenizer values = new StringTokenizer(data); // using space character as delimiter
// Using 3 values per line
int lines = (int)(values.countTokens()/3);
int columns = 3;
accounts = new String[lines][columns];
for(int i=0; i<lines; i++)
for(int j=0; j<columns; j++)
accounts[i][j] = values.nextToken();
catch(Exception error)
// debug stuff
} -
How do I get content back into itunes from ipod/iphone and ipad when old pc died and now have a blank itunes?
check out this post by Zevoneer.
-
Will Time Machine backup 2 internal HDs and put the data back into them when restoring?
Hello,
I am going to be doing a clean install of Snow Leopard. I have a machine that has 2 internal HDs. If they are backup up using Time Machine, when restoring, will it put those files exactly as they were?
Thanks!Restore to a multiple disk setup should work fine. But there are as always some tricks to it.
See our expert Pondini's explaination and follow his links.. I suggest you actually spend some time understanding how TM works.
http://pondini.org/TM/32.html
I would also recommend spending a few dollars and buy CCC or superduper. Make a backup of each drive. These 3rd party backup programs are more flexible and you can create direct images of the drives. It makes recovery a much much easier process.
If it is a Mac Pro put in another disk for TM backups and use a USB or even esata card and external sata drive for backups using CCC. Doing it that way you can make a bootable image of your main drive. -
How to read from excel file and write it using implicit jsp out object
our code is as below:Please give us proper solution.
we are reading from Excel file and writing in dynamicaly generated Excel file.it is writing but not as original excel sheet.we are using response.setContentType and response.setHeader for generating pop up for saveing the original file in to dynamically generated Excel file.
<%@ page contentType="application/vnd.ms-excel" %>
<%
//String dLoadFile = (String)request.getParameter("jspname1");
String dLoadFile = "c:/purge_trns_nav.xls" ;
File f = new File(dLoadFile);
//set the content type(can be excel/word/powerpoint etc..)
response.setContentType ("application/msexcel");
//get the file name
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
//set the header and also the Name by which user will be prompted to save
response.setHeader ("Content-Disposition", "attachment; filename="+name);
//OPen an input stream to the file and post the file contents thru the
//servlet output stream to the client m/c
FileInputStream in = new FileInputStream(f);
//ServletOutputStream outs = response.getOutputStream();
int bit = 10;
int i = 0;
try {
while (bit >= 0) {
bit = in.read();
out.write(bit) ;
} catch (IOException ioe) { ioe.printStackTrace(System.out); }
out.flush();
out.close();
in.close();
%>If you want to copy files as fast as possible, without processing them (as the DOS "copy" or the Unix "cp" command), you can try the java.nio.channels package.
import java.nio.*;
import java.nio.channels.*;
import java.io.*;
import java.util.*;
import java.text.*;
class Kopy {
* @param args [0] = source filename
* args [1] = destination filename
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println ("Syntax: java -cp . Kopy source destination");
System.exit(1);
File in = new File(args[0]);
long fileLength = in.length();
long t = System.currentTimeMillis();
FileInputStream fis = new FileInputStream (in);
FileOutputStream fos = new FileOutputStream (args[1]);
FileChannel fci = fis.getChannel();
FileChannel fco = fos.getChannel();
fco.transferFrom(fci, 0, fileLength);
fis.close();
fos.close();
t = System.currentTimeMillis() - t;
NumberFormat nf = new DecimalFormat("#,##0.00");
System.out.print (nf.format(fileLength/1024.0) + "kB copied");
if (t > 0) {
System.out.println (" in " + t + "ms: " + nf.format(fileLength / 1.024 / t) + " kB/s");
} -
Error in reading from excel file
hi,
I have written a program which reads from excel file
and based on the value of the column i have to do something.
Everything is fine but when i run it, it produces an error message
Exception: For input string: "851.0"
the value 851.0 is acually the value of the first column.
Here is the code and i hope someone can help me to find the solution
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection( "jdbc:odbc:exceltest" );
Statement st = con.createStatement();
ResultSet rs = st.executeQuery( "Select * from [Sheet1$] " );
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if(i==1){
String columnValue1 = rs.getString(i);
custNo =Integer.parseInt(columnValue1);
// System.out.println(columnValue1);
found=search(custNo);
if (found==false)
insert(custNo);
System.out.println(columnValue1);
else if (i == numberOfColumns && found==false)
String columnValue = rs.getString(i);
if(columnValue=="a")
incrementCusta();
else if (columnValue=="b")
incrementCustB();
else if(columnValue=="c")
incrementCustc();
else if(columnValue=="d")
incrementCustId();
System.out.println("");
st.close();
con.close();
} catch(Exception ex) {
System.err.print("Exception: ");
System.err.println(ex.getMessage());
}Maybe 851.0 is float value, not string.
Try Object columnValue1 =
rs.getObject(i); instead of String
columnValue1 = rs.getString(i);
You are absolutely right i actually change the line
custNo =Integer.parseInt(columnValue1);
into
custNo =Double.parseDouble(columnValue1);
Thanks alot :) -
.exe reading from Excel files
Hi everybody,
I know similar questions have been asked lots of times but while searching the forum didn't find an anwer to my problem.
I created an exe file (using exe4j) of a java application which reads form Excel files. Although it works when I run it from my editor, when running the exe file it cant find the Excel file. More specifically I have this error:
"java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
In order to read from excel files I use POI. I used it so as not to use ODBC driver and make it possible to run in every computer. When adding the driver, the exe works.Do you know a way to make it work without having to install the Driver?
Thanks in AdvanceYou need database drivers to read excel spread sheets?
Also, why did you make it an exe? just jar it and be done with it. -
Lightroom encountered and error when reading from it preview cache and needs to quit
A power outage caused my Lightroom 5.2 to shut down without closing. When I powered back up and opened lightroom it gives me an error "Lightroom encountered and error when reading from it preview cache and needs to quit" and then it says it will try to fix it the next time it opens. I have opened it 20 times and it is not fixing it. I removed the program completely and upgraded to 5.5 AND it is still giving me the same error. Is my catalog corrupt or something? I had it set to automatically load the most currently used catalog, so it is not allowing me to open or start a new catalog either. HELP!!!
Search the forum, this has been answered many times.
-
"Lightroom encountered and error when reading from its preview cache and needs to quit"
I keep receiving this error every time I open LR, "Lightroom encountered and error when reading from its preview cache and needs to quit" and the app won't open. It said LR would try and fix this error next time I opened it but the error remains. I tried uninstalled and installing the app and the error remains.
Any Ideas here? Is there another app that may be telling it where to look for the cache and it no longer there? I was using a ramdisk for a bit but ditched it. Not sure if that has something to do with it but it seems suspect.
Your thoughts?
--Kenny Brandon WilsonTalked to Adobe support this morning, this is their response in case anyone else is looking for help. I'm running a Windows 7 box, LR 5.6.
Gokul: Click on start and type %appdata%, then open roaming folder.
Edward: ok
Gokul: Open Adobe folder.
Gokul: Open Lightroom folder.
Gokul: Open Lightroom folder> Preferences.
Edward: ok
Gokul: Rename Lightroom 5 Preferences.agprefs file as Lightroom 5 Preferences.agprefsOLD.
Edward: OK
Gokul: Please check if you can launch Lightroom without any error.
Edward: it shows me a welcome screen and is asking me to select my country
Edward: aka, register the software
Gokul: You can skip and launch it.
Edward: LR catalog not found
Gokul: Please select the catalog.
Edward: my original catalog?
Gokul: Yes.
Edward: testing integrity of catalog
Edward: loaded just fine
Gokul: Okay.
Gokul: Please check if you can re-launch it again.
Edward: yes, it worked!
Gokul: Excellent!
Gokul: Since your preferences were corrupted you were facing issue so we renamed the preferences file to reset it.
Edward: aha....ok
All of my import/export presets were intact along with develop user presets. I'm happy as a clam for my $10/month! -
Lightroom encountered an error when reading from its preview cache and needs to quit. Lightroom will attempt to fix this problem the next time it launches"."Help
PleaseStan Blumberg wrote:
I have deleted the file but the message persists even after restarting the computer....any advice??...I am using LR 5
You don't delete a file, you have to delete a folder. Is that what you did?
If you deleted the folder specified above, and you still get the message, then it's the wrong folder. Use your operating system's search function and find ALL folders on ALL disks whose name ends with Previews.LRDATA, delete each one found, and then try opening Lightroom. -
"Lightroom encountered an error when reading from its preview cache and needs to quit. Lightroom will attempt to fix this problem the next time it lauches". What do I do? I get the msg each time I try to open it.
It isn't a file, it's a folder. It will have the same name as your catalog, but will have the extension data. It will be in the same folder along with your catalog. If you need to use the search feature to search for *.lrdata.
-
Java Heap Space error while reading from Excel
Hello,
I have a data flow which reads from excel and updates records in an oracle table.
When the data flow tries to read the excel I get a java Heap space Error.
Error preparing to read <SUPP_STG3_FILE1>: <Java heap space>.
Data flow <DF_SUPP_STG3_UPD> is terminated due to error <58105>.
I have configured Excel Adapter since the server is on UNIX. BOExcelAdapter shows status as red once the execution fails. Before that BOExcel adapter status is green.
BOExcelAdapter Trace:
1/13/12 10:57:38 PM Thread[Thread-6,5,main] Received an error message from the message broker. [Communication failure. Read timed out]. Will exit adapter immediately.
1/13/12 10:57:47 PM Thread[main,5,main] Create broker client for life-cycle management. Host:port = hikalxboes01:4001
1/13/12 10:57:47 PM Thread[main,5,main] Create broker client for data exchange with ASP. Host:port = hikalxboes01:4001. Client ID = com.acta.adapter.msexceladapter.MSExcelAdapter.data_18
1/13/12 10:57:47 PM Thread[Thread-11,5,main] Create broker client for real-time services with ASP. Host:port = 'hikalxboes01:4000''.
1/13/12 10:57:47 PM Thread[Thread-11,5,main] Start instance [BOExcelAdapter] of adapter [com.acta.adapter.msexceladapter.MSExcelAdapter].
1/13/12 10:57:47 PM Thread[Thread-11,5,main] Register the client ID [com.acta.adapter.msexceladapter.MSExcelAdapter.data_18] and adapter destination [hikalxboes01:4001] with the adapter manager.
1/13/12 10:57:47 PM Thread[Thread-11,5,main] Registration complete.
1/13/12 10:58:10 PM Thread[Thread-10,5,main] java.lang.OutOfMemoryError: Java heap space
at org.apache.poi.hssf.usermodel.HSSFRow.addCell(HSSFRow.java:273)
at org.apache.poi.hssf.usermodel.HSSFRow.createCellFromRecord(HSSFRow.java:196)
at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:183)
at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:128)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:283)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:196)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:178)
at com.acta.adapter.msexceladapter.MSExcelAdapterReadTable.begin(MSExcelAdapterReadTable.java:537)
at com.acta.adapter.sdk.StreamOperationWrapper.beginStream(StreamOperationWrapper.java:88)
at com.acta.adapter.sdk.AdapterRunnerImpl.processBeginOperation(AdapterRunnerImpl.java:1762)
at com.acta.adapter.sdk.AdapterServiceDataListener.handleBrokerMessage(AdapterServiceDataListener.java:90)
at com.acta.brokerclient.BrokerClient.handleMessage(BrokerClient.java:439)
at com.acta.brokerclient.BrokerClient.access$100(BrokerClient.java:53)
at com.acta.brokerclient.BrokerClient$MessageHandler.run(BrokerClient.java:1621)
at com.acta.brokerclient.ThreadPool$PoolThread.run(ThreadPool.java:100)
BOExcelAdapter Error Log:
1/13/12 10:58:10 PM java.lang.OutOfMemoryError: Java heap space
at org.apache.poi.hssf.usermodel.HSSFRow.addCell(HSSFRow.java:273)
at org.apache.poi.hssf.usermodel.HSSFRow.createCellFromRecord(HSSFRow.java:196)
at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:183)
at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:128)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:283)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:196)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:178)
at com.acta.adapter.msexceladapter.MSExcelAdapterReadTable.begin(MSExcelAdapterReadTable.java:537)
at com.acta.adapter.sdk.StreamOperationWrapper.beginStream(StreamOperationWrapper.java:88)
at com.acta.adapter.sdk.AdapterRunnerImpl.processBeginOperation(AdapterRunnerImpl.java:1762)
at com.acta.adapter.sdk.AdapterServiceDataListener.handleBrokerMessage(AdapterServiceDataListener.java:90)
at com.acta.brokerclient.BrokerClient.handleMessage(BrokerClient.java:439)
at com.acta.brokerclient.BrokerClient.access$100(BrokerClient.java:53)
at com.acta.brokerclient.BrokerClient$MessageHandler.run(BrokerClient.java:1621)
at com.acta.brokerclient.ThreadPool$PoolThread.run(ThreadPool.java:100)As Jay mentioned above it might be due to the size of the Excel spreadsheet as you might be hitting the limitation in Apache POI library used for adapter.
What is the size of the Excel file?
What is the value of -Xmx parameter - see DS Management Console > Adapter configuration page.
Thank you,
Viacheslav. -
CLIENT_OLE2 date formatting problem while reading from Excel
I have installed webutil package and tested that everything works by running webutil_demo as well as WU_TEST_106 form. Then I had implemented reading from Excel sp. sheet using Oracle note 813535.1 (This note has OLE2 code sample on how to read an Excel file). Everything fine till now. The problem started when I have a date fiield to read from Excel. The field where the value is going to has format mask of 'DD-MM-RRRR'. When the date is displayed in the form, it shows '01-AUG-0009' instead of '01-AUG-2009'. I tried changing the date format to different formats in Excel but no go. I found one blog which stated that treat the date as number and use e.g. "cell_date_value:=to_date('01/01/1900','DD/MM/YYYY')+client_OLE2.get_num_property(cel,,'Value')+2" but it too did not change the display. Then I tried debugging and stepping through the code..the only thing I noticed that OLE2 function displayed the date with 2 digit year as 09 and when the code completed execution, the date went back to '01-AUG-0009'. Casting with 4 digit year at every step in the code is not helping to change final date display correctly. Any idea?!!!
Hi,
While reading the date column from excel, try using
m_col_val := OLE2.get_char_property(Workcell,'Text');
Instead of
m_col_val := OLE2.get_char_property(Workcell,'Value');
I think you problem will be solved...
hello...i meant client_OLE2
Regards
Dora
Edited by: Dora on Sep 16, 2009 11:05 AM -
Giving a specific path to the reading from excel application
Hello, i want to know there is a way of giving a specific path to an application (reading from excel sheet) without all the time getting to enter the path? if someone could help. i'm using labview 8.0
Regards,
Tchaouyou could just use a path constant. Drop a path constant on the BD and right click on it and select browse and then find the file you want.
Joe.
"NOTHING IS EVER EASY" -
LR encountered an error when reading from its preview cache and needs to quit.
I have the 30 day trial version of Lightroom. I was able to use it for one week, but the past 1.5-2 weeks, it has been locked up and giving this error message. How do I resolve the problem? And how do I reset the 30 day free trial? I would like to have time using the product, before deciding on the annual contract.
"LR encountered an error when reading from its preview cache and needs to quit. Lightroom will attempt to fix this problem the next time it launches."
Thank you.Delete the preview cache from the Lightroom folder in your Pictures folder if you used the default placement. It has the extension .lrdata.
You cannot reset the trial period.
Maybe you are looking for
-
Every time i try to update apps my iTunes account will not appear only my old one and my wife's. I can't figure out how to fix this can anyone hel???
-
Hi all, 1. I setup a pool with three Front End servers (FQDN of pool is pool.site1.sip96x2.com and it's pointed to IP address of three Front End servers). Everything works fine. But When I disable network interface on FE1 and FE2, the Lync clients ar
-
Lightroom 5 won't show up in Creative Cloud app
I read it might be the Creative Cloud app language - I use Hungarian but tried to change it to English, no improvement. I also read it might be system requirements - here's what I have, should be O.K.: OS: Windows 8.1 64-bit, fully patched CPU: Intel
-
How to block a particular website in mozilla firefox?
I just want to block a particular website from mozilla firefox browser. The steps given in the option are not working really. let me know in details the procedure to block a particular website.
-
Need to track windows processes through java code.
Need to track windows processes through java code. Eg: I want to find out whether an exe file (wrun.exe) is running or stopped. Can I do it through java. If so can any one please tell me how to do it. That will be a great help. Thanks, Ramesh