i am trying to write a code to open an excel (.xsl) and add new lines to existing content and then save it and close it. Want to do this from Unix batch script. Was this possible ? i am not aware of perl/python etc. i know only unix to code this.
Related
I have done quite a bit of searching before posting this question so let me outline what I am trying to do.
1.) I do not want to use applications I have to download from a website or created custom commands (please no start Xls2Csv.exe here's a link to a website where you can download the program) I do not want to download a program to do this.
2.) I want to keep it in the batch file if possible - I have tried the vbc/vbs/vb files that is not what I am looking for.
3.) I found this an this is close to what I need but if I can stay within a batch file that would be best: Can a Batch File Tell a program to save a file as? (If so how)
Background
I have a bunch of test records stored in excel sheets within folders. Each test record has autoformatted name so the only real difference between any of the filenames is a serial number, otherwise each file name is formatted the exact same way.
I have written a batch file to search and find the files I need but I am stuck on obtaining a tiny bit of information in a .xls file.
What I am trying to do - I have excel files (.xls) and there is a word in a cell on one of many sheets that I would like to copy into a textfile. However I am unable to use findstr for an excel find because the command searches the file as if you opened it in notepad and the data I need is not present.
I am not concerned of data loss as long as I can get this tiny bit of information to a text file.
Otherwise what I have found to be the best solution is to convert an XLS to a CSV. I have manually done it by opening the file and saving as type .csv that worked.
What hasn't worked is:
example1.xls >> example2.csv
ren example1.xls example3.csv - this will save it as a csv file but still opens with the same formating of the xls file in both excel and notepad.
I was hoping that the was a command to recreate the manual process of opening the file and saving as csv.
If there are any other suggested solutions - maybe a command where I can search for a string within an excel file? That would be the simplest option.
I've been trying to search for similar questions but wasn't able to find much for precisely what I'm looking for. I could have missed it in my search - if any of you can find a previous thread for this, please link it for me :)
Essentially what I'm trying to achieve is to fully automate an Excel report, which involves running a macro that I have a .BAS file for. I've seen tutorials for how to create a .VBS and .BAT script to automate the running of macros, but I wan't to also automate the importing of the macros. For example:
- I have my base dataset that I want to run the macro on, which comes in a standard Excel file (xlsx), which I save in a consistent location
- I have my .BAS file which contains the macro I want to use every time, saved in a different location from my reports
- What I am seeking: to have a .BAT file on my desktop that will automate: 1) Opening my standard xlsx file, 2) Saving it as an xlsm, 3) Importing my .BAS file with my macro, 4) Executing the macro, and 5) Closing Excel.
The key part I am missing is how to have the .BAT script automatically import the .BAS module into my Excel file. If I have to manually open Excel and import the module, I might as well just manually run the macro as well, thus eliminating the purpose of trying to create a .BAT file to automate :)
If anyone can provide guidance, that would be much appreciated. I hope my post was clear - if any questions, I can clarify in comments.
I am looking for some help/guidance on creating a .bat file to pass a list of characters into a password dialog box in Excel. In other words, I know that the password is 3 characters long (26^3 possibilities). I tried using WorkSpace Macro Pro to do this, but it is taking too long.
My coworker recommended that I create a .bat file. Where as I have 17,576 (26^3)lines of code. I would need a log file to see which password was successful in opening the file. I have never written a .bat file in my life, so maybe somebody can help me out! Thanks!
Darren
You might want to look into writing a VBA script to do that. Are you trying to script inside of Excel, or are you trying to script to open the file? If you trying to access something in the spreadsheet, you can write your own little macro programs to do all sorts of automation. On Mac it's under Tools | Macro | Macros...
is there a way how to make Matlab open excel files directly in MS Excel? I do not mean just read data, but physically open MS Excel.
I have a script that processes some data and saves it into .xlsm. This .xlsm contains auto_open macro which generates a report and saves it into another .xls.
I want the process to be as automatic as possible. So far, when the matlab script ends, .xlsm file needs to be open manually. Is it possible to do it via Matlab? (The .m file and .xlsm are in the same folder.)
The simplest way to open (but not close) an Excel file is to use WINOPEN:
winopen('myFile.xlsx')
Excel has a powerful COM interface that lets you control it from another application.
Look here for the matlab side of things
http://www.mathworks.co.uk/help/techdoc/ref/actxserver.html
And here for an example of putting it all together . . .
https://www.quantnet.com/forum/threads/interface-between-matlab-vba-excel.2090/
or here is another example
http://www.mathworks.co.uk/support/solutions/en/data/1-716EAM/index.html?solution=1-716EAM
Yes, it is possible. Matlab can use Excel's Automation interface to do this and similar tasks. The following code loads Excel and then loads a workbook:
try
w = actxserver('Excel.Application'); % Fails if Excel not installed
catch
w = [];
end
if ~isempty(w)
w.Workbooks.Open('D:\Documents\MATLAB\file.xlsx');
% Your code here;
w.Quit;
end
delete(w);
You will need to look at Microsoft's documentation for the Excel automation interface to figure out exactly what commands you need to send. Try starting here.
I have used this technique to drive Word from Matlab in order to produce a report document, but I have never used Excel this way, so unfortunately I can't help you with the gory details!
Thinking that to solve a problem I've got this is the fastest solution:
Generate a custom CSV file on the file (this is already done via Perl).
Have a XLS document opened via commandline via a scripting language (clients already got a few Perl scripts running in this pipeline.)
Write VBA or record a macro that executes the following OnLoad:
Imports a the data from the CSV file into the report template,
Print the file via PDF driver to fixed location using data in the CSV to name the file.
Closes the XLS file.
So, is this possible via Excel macros, if not is it possible via VBA -- thanks!
NOTE: Appears I've got to have a copy of MS Office anyway, so this is much faster to get going than using Visual Studio Tools for Office (VSTO). The report template is going to be on a server, and this way the end user can build as many reports as they like, "test" by printing a PDF using a demo CSV file, and import/embed the marco or VBA when they're done. I'd looked in Jasper Reports, but the end user is putting ad-hoc static text and groupings all over the report and I figure this way they can build reports how ever they want and then automate them. Both of these questions by me and the resulting comments/feedback are related to this question:
In Excel, is it possible to automate reading of CSV data into a template and printing it to PDF from the commandline?
Is it possible to deploy a VB application made in Excel as a stand alone app?
FOCUS OF QUESTION: Again, focus of the question is if this is possible via Excel marcos, if not macros VBA, and if there's any huge issue with this approach; for example, I know this is going to be "slow" since Excel would be loaded per job, but there's 16GB of ram on the server and it's not used at all. Figure since I've got to have a copy of office on the server anyway, this is a much faster approach.
If you've got any questions, let me know via comments.
I suppose you could launch the report file from perl and then have a macro inside the report file automatically look for the newest csv file to import. Then you could process and output. So you just need to launch the proper excel file with the embedded macros from perl and then let excel and VBA take over.