1) Your first call after starting up ZEMAX and Matlab must be to zDDEInit.
2) Timeouts can be a problem. Increase the DDE timeout limit using zSetTimeout if necessary.
3) ZEMAX has two copies of the lens data, one displayed in the Lens Data Editor, and the other stored in the DDE server. Your can copy the one to the other using the zPushLens and zGetRefresh functions. zPushLens always requires a single parameter giving the timeout in seconds.
4) zPushLens will only work if you have granted ZEMAX extensions permission to push lenses by checking the box on the Editors tab of the ZEMAX Preferences dialog.