Read same cell in multiple excel files
5 次查看(过去 30 天)
显示 更早的评论
Hi, I apologize for being naive and new. I am trying to read the same cell in multiple excel files. I have figured out how to rename each file ending with a counter from *0001 to *5000. If I want to read cell A1 in each file, and copy and paste that to an existing spreadsheet into A1 to A5000, how would I accomplish this? I was able to name each spreadsheet with the counter but I do not know how to efficiently read and write. Activex seems the best way?
Thank you in advance, RO
0 个评论
采纳的回答
Image Analyst
2014-10-29
Yes. If you have lots of files ActiveX is the best way - it will be a lot faster, a lot . I attach an ActiveX demo using Excel. It shouldn't be too hard to adapt it.
2 个评论
dpb
2014-10-29
...ActiveX [...] will be a lot faster, ...
Ayup, 'cepting I know so little of the VBA syntax it's so frustrating to try to write stuff that unless it's going to be used over and over I can just wait for the other way and still be way ahead overall...
Image Analyst
2014-10-29
Granted, you can spend more time writing the ActiveX code than you save over just using xlswrite. You don't need to know any VBA exactly. You can record a macro in Excel. Just start recording a macro (while you're in Excel) and then do whatever things you need to do, then stop recording. Then edit the macro and you'll see the VBA script with VBA style of calling the ActiveX commands. While this doesn't transfer over directly (copy-and-paste) into your MATLAB code, it does show you what ActiveX method got called. So then you can call the same methods in your MATLAB function using the MATLAB-style syntax (which may be slightly different). It's a little tricky when the VBA script uses "enumerated" values, like vbHorizontalAlignment or whatever. Then you have to do a little digging or coding to figure out what number that actually is because MATLAB only knows how to use the number it is, not an enumeration variable. (Hope I didn't lose anyone with all that.)
更多回答(1 个)
dpb
2014-10-28
编辑:dpb
2014-10-29
I'd hope all the files to be read are in the same location and have at least some naming convention in common. If so, the simplest thing is
d=dir('Appropriatewildcardexpression*.xls'); % return the directory list of desired files
outfile='Yourdesiredoutputfilename.xls')
L=length(d); % how many found
v=zeros(L,1); % array to hold values
for i=1:length(d)
v(i)=xlsread(d(i).name,'A1'); % read the values in array
end
xlswrite(outfile,'A:') % write in column A
ADDENDUM
Actually, if you can use something other than Excel when creating these (like a regular text file) or even better stream the output to a single file you could eliminate both of the problems with Excel -- slow the easy-to-code way, pita to code the other.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 ActiveX 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!