1. Trang chủ
  2. » Công Nghệ Thông Tin

Financial Applications Using Excel Add-in Development in C/C++Second Edition phần 1 doc

59 531 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Financial Applications Using Excel Add-in Development in C/C++
Tác giả Steve Dalton
Trường học Wiley
Thể loại second edition
Định dạng
Số trang 59
Dung lượng 546,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Financial Applications Using Excel Add-in Development in C/C++Second Edition of Excel Add-in Development in C/C++ Steve Dalton... Financial Applications using Excel Add-in Development in

Trang 2

Financial Applications Using Excel Add-in Development in C/C++

Second Edition of Excel

Add-in Development in C/C++

Steve Dalton

Trang 4

Financial Applications using Excel Add-in Development in C/C++

Trang 5

For other titles in the Wiley Finance Seriesplease see www.wiley.com/finance

Trang 6

Financial Applications Using Excel Add-in Development in C/C++

Second Edition of Excel

Add-in Development in C/C++

Steve Dalton

Trang 7

Copyright  2007 John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester,

West Sussex PO19 8SQ, England Telephone ( +44) 1243 779777 Email (for orders and customer service enquiries): cs-books@wiley.co.uk

Visit our Home Page on www.wileyeurope.com or www.wiley.com

All Rights Reserved No part of this publication may be reproduced, stored in a retrieval system or

transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except under the terms of the Copyright, Designs and Patents Act 1988 or under the terms of a licence issued by the Copyright Licensing Agency Ltd, 90 Tottenham Court Road, London W1T 4LP, UK, without the permission in writing of the Publisher Requests to the Publisher should be addressed to the Permissions Department, John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester,

West Sussex PO19 8SQ, England, or emailed to permreq@wiley.co.uk, or faxed to ( +44) 1243 770620 Designations used by companies to distinguish their products are often claimed as trademarks All brand names and product names used in this book are trade names, service marks, trademarks or registered trademarks of their respective owners The Publisher is not associated with any product or vendor mentioned

in this book.

This publication is designed to provide accurate and authoritative information in regard to the subject matter covered It is sold on the understanding that the Publisher is not engaged in rendering professional services If professional advice or other expert assistance is required, the services of a competent professional should be sought.

Other Wiley Editorial Offices

John Wiley & Sons Inc., 111 River Street, Hoboken, NJ 07030, USA

Jossey-Bass, 989 Market Street, San Francisco, CA 94103-1741, USA

Wiley-VCH Verlag GmbH, Boschstr 12, D-69469 Weinheim, Germany

John Wiley & Sons Australia Ltd, 42 McDougall Street, Milton, Queensland 4064, Australia

John Wiley & Sons (Asia) Pte Ltd, 2 Clementi Loop #02-01, Jin Xing Distripark, Singapore 129809 John Wiley & Sons Canada Ltd, 6045 Freemont Blvd, Mississauga, ONT, L5R 4J3, Canada

Wiley also publishes its books in a variety of electronic formats Some content that appears

in print may not be available in electronic books.

Library of Congress Cataloging-in-Publication Data

Includes bibliographical references and index.

ISBN 978-0-470-02797-4 (cloth/cd : alk paper)

1 Microsoft Excel (Computer file) 2 Business—Computer programs 3 C (Computer program language)

4 C++ (Computer program language) 5 Computer software—Development I Dalton, Steve.

Excel add-in development in C/C++ II Title.

HF5548 4.M523D35 2007

British Library Cataloguing in Publication Data

A catalogue record for this book is available from the British Library

ISBN 978-0-0470-02797-4 (HB)

Typeset in 10/12pt Times by Laserwords Private Limited, Chennai, India

Printed and bound in Great Britain by Antony Rowe Ltd, Chippenham, Wiltshire

This book is printed on acid-free paper responsibly manufactured from sustainable forestry

in which at least two trees are planted for each one used for paper production.

Trang 8

Acknowledgements for the First Edition xxi Acknowledgements for the Second Edition xxiii

1.4.4 Compatibility between Excel 2007 and earlier versions 6

2.6.2 The unary – operator (negation) 16

Trang 9

2.10.1 Function purpose and return type 292.10.2 Array formulae – The Ctrl-Shift-Enter keystroke 302.10.3 Required, optional and missing arguments and variable

2.12.1 Marking dependents for recalculation 332.12.2 Triggering functions to be called by Excel – the trigger

2.12.4 Cross-worksheet dependencies – Excel 97/2000 versus

2.12.5 User-defined functions (VB Macros) and add-in functions 38

2.12.8 Argument evaluation:IF(),OR(),AND(),CHOOSE() . 412.12.9 Controlling Excel recalculation programmatically 422.12.10 Forcing Excel to recalculate a workbook or other object 442.12.11 Using functions in name definitions 452.12.12 Multi-threaded recalculation 45

Trang 10

2.15.1 Function category 472.15.2 Function name, argument list and description 48

2.16 Good spreadsheet design and practice 492.16.1 Filename, sheet title and name, version and revision history 49

3.3 Assigning VBA command macros to control objects in a worksheet 58

3.6.7 Passing strings to C/C++ functions from VBA 683.6.8 Returning strings to VBA from a DLL 70

3.6.10 Variant types supported by VBA 723.6.11 Variant types that Excel can pass to VBA functions 74

3.6.14 Calling XLM functions and commands from VBA:

Trang 11

viii Contents

3.10 VBA versus C/C++: some basic questions 88

4 Creating a 32-bit Windows (Win32) DLL Using Visual C++ 6.0 or

4.7.1 The declspec(dllexport)keyword 95

4.7.3 Using a preprocessor linker directive 974.8 What you need to start developing add-ins in C/C++ 97

4.9.1 Creating the empty DLL project 98

4.9.3 Compiling and debugging the DLL 1014.10 Creating a DLL using Visual C++ NET 2003 1034.10.1 Creating the empty DLL project 103

4.10.3 Compiling and debugging the DLL 106

4.12 Accessing DLL functions from excel 110

5 Turning DLLs into XLLs: The Add-in Manager Interface 111

5.1 The xlcall32 library and the C API functions 111

5.2.1 Loading and unloading installed add-ins 114

5.2.3 Deleted add-ins and loading of inactivate add-ins 1145.3 Creating an XLL: The xlAutointerface functions 1155.4 When and in what order does Excel call the XLL interface

Trang 12

5.5.6 xlAutoRegister (xlAutoRegister12) 122

6 Passing Data Between Excel and the DLL 127

6.1 Handling Excel’s internal data structures: C or C++? 1276.2 How Excel exchanges worksheet data with DLL add-in functions 128

6.2.2 Excel floating-point array structures:xl4_array,

6.2.3 Thexloper/xloper12structures 135

6.2.5 Thexlmref/xlmref12structures 142

6.3 Defining constantxlopers/xloper12s 1446.4 A C++ class wrapper for the

xloper/xloper12 – cpp_xloper 1466.5 Converting betweenxloper/xloper12s and C/C++

6.6 Converting betweenxloper/xloper12types 1546.7 Converting betweenxlopers and variants 1556.8 Converting betweenxlopers andxloper12s 1596.9 Detailed Discussion ofxlopertypes 163

6.9.2 Worksheet (floating point) number:xltypeNum 1666.9.3 Length-counted string: xltypeStr 168

6.9.5 Worksheet error value:xltypeErr 1776.9.6 Excel internal integer:xltypeInt 1786.9.7 Array (mixed type):xltypeMulti 1806.9.8 Worksheet cell/range reference:xltypeRefand

7.2 Static add-in memory and multiple Excel instances 2047.3 Getting Excel to free memory allocated by Excel 2057.3.1 Freeingxlopermemory within the DLL call 2057.3.2 Freeing Excel-allocatedxlopermemory returned by the

7.3.3 Hidingxlopermemory management within a C++ class 2087.4 Getting Excel to call back the DLL to free DLL-allocated memory 2087.5 Returning data by modifying arguments in place 211

Trang 13

7.6.5 Using critical sections with memory shared between threads 219

8 Accessing Excel Functionality using the C API 223

8.1.1 Commands, worksheet functions and macro sheet functions 2248.1.2 Commands that optionally display dialogs – the

8.6 Registering and un-registering DLL (XLL) functions 244

8.6.2 Specifying which category the function should be listed

8.6.3 Specifying argument and return types 2498.6.4 Giving functions macro sheet function permissions 2528.6.5 Specifying functions as volatile 2538.6.6 Specifying functions as thread-safe (Excel 2007 only) 2538.6.7 Returning values by modifying arguments in place 2538.6.8 The Paste Function dialog (Function Wizard) 2548.6.9 Function help parameter toxlfRegister 2568.6.10 Argument help parameters toxlfRegister 2568.6.11 Managing the data needed to register exported functions 2568.6.12 Registering functions with dual interfaces for Excel 2007

8.6.13 A class based approach to managing registration data 2668.6.14 Getting and using the function’s register ID 2698.6.15 Un-registering a DLL function 2708.7 Registering and un-registering DLL (XLL) commands 271

Trang 14

8.7.1 Accessing XLL commands 2738.7.2 Breaking execution of an XLL command 2748.8 Functions defined for the C API only 2748.8.1 Freeing Excel-allocated memory within the DLL: xlFree 2748.8.2 Getting the available stack space:xlStack 2758.8.3 Converting onexloper/xloper12type to another:

8.8.4 Setting cell values from a command: xlSet 2788.8.5 Getting the internal ID of a named sheet:xlSheetId 2798.8.6 Getting a sheet name from its internal ID:xlSheetNm 2818.8.7 Yielding processor time and checking for user breaks:

8.8.8 Getting Excel’s instance handle:xlGetInst 2838.8.9 Getting the handle of the top-level Excel window:

8.8.10 Getting the path and file name of the DLL: xlGetName 284

8.9.2 Basic operations with binary names 2868.9.3 Creating, deleting and overwriting binary names 287

8.10 Workspace information commands and functions 2898.10.1 Setting the application title:xlfAppTitle 2908.10.2 Setting the document window title: xlfWindowTitle 2908.10.3 Getting a reference to the active cell:xlfActiveCell 2918.10.4 Getting a list of all open Excel documents:

8.10.5 Information about a cell or a range of cells:xlfGetCell 2918.10.6 Sheet or workbook information:xlfGetDocument 2938.10.7 Getting the formula of a cell:xlfGetFormula 2978.10.8 Getting a cell’s comment:xlfGetNote 2978.10.9 Information about a window:xlfGetWindow 2988.10.10 Information about a workbook:xlfGetWorkbook 3018.10.11 Information about the workspace:xlfGetWorkspace 3038.10.12 Information about the selected range or object:

8.10.13 Getting names of open Excel windows:xlfWindows 3108.10.14 Converting a range reference:xlfFormulaConvert 3118.10.15 Converting text to a reference:xlfTextref 3128.10.16 Converting a reference to text:xlfReftext 3128.10.17 Information about the calling cell or object:xlfCaller 3138.10.18 Information about the calling function type 315

8.11.1 Specifying worksheet names and name scope 3168.11.2 Basic operations with Excel names 3188.11.3 Defining a name on a worksheet: xlcDefineName 318

Trang 15

xii Contents

8.11.4 Defining and deleting a name in the DLL: xlfSetName 3198.11.5 Deleting a worksheet name:xlcDeleteName 3218.11.6 Getting the definition of a named range:xlfGetName 3228.11.7 Getting the defined name of a range of cells: xlfGetDef 3248.11.8 Getting a list of named ranges:xlfNames 325

8.12.1 Menu bars and ID numbers and menu and command

8.12.2 Short-cut (context) menu groups 3288.12.3 Getting information about a menu bar: xlfGetBar 3308.12.4 Creating a new menu bar or restoring a default bar:

8.12.5 Adding a menu or sub-menu:xlfAddMenu 3328.12.6 Adding a command to a menu:xlfAddCommand 3358.12.7 Displaying a custom menu bar:xlfShowBar 3388.12.8 Adding/removing a check mark on a menu command:

8.13.1 Getting information about a toolbar:xlfGetToolbar 3458.13.2 Getting information about a tool button on a toolbar:

8.13.3 Creating a new toolbar:xlfAddToolbar 3468.13.4 Adding buttons to a toolbar:xlcAddTool 3478.13.5 Assigning/removing a command on a tool:

8.14.1 Displaying an alert dialog box:xlcAlert 3518.14.2 Displaying a custom dialog box:xlfDialogBox 3528.14.3 Restricting user input to dialog boxes:

8.15.1 Trapping a DDE data update event:xlcOnData 3578.15.2 Trapping a double-click event:xlcOnDoubleclick 357

Trang 16

8.15.3 Trapping a worksheet data entry event: xlcOnEntry 3588.15.4 Trapping a keyboard event:xlcOnKey 3588.15.5 Trapping a recalculation event: xlcOnRecalc 3608.15.6 Trapping a window selection event:xlcOnWindow 3608.15.7 Trapping a system clock event:xlcOnTime 3618.16 Miscellaneous commands and functions 3618.16.1 Disabling screen updating during command execution:

8.16.2 Displaying text in the status bar:xlcMessage 3618.16.3 Evaluating a cell formula: xlfEvaluate 3628.16.4 Calling user-defined functions from an XLL or DLL:

9.3 Relative performance of C API versus VBA calling from a

9.4.3 Detecting when a worksheet function is called from either

the Search and Replace or Paste Function dialogs 3759.5 Accessing Excel functionality using COM/OLE automation using

9.5.1 Initialising and un-initialising COM 3779.5.2 Getting Excel to recalculate worksheets using COM 3799.5.3 Calling user-defined commands using COM 3809.5.4 Calling user-defined functions using COM 3829.5.5 Calling XLM functions using COM 3839.5.6 Calling worksheet functions using COM 3839.6 Maintaining large data structures within the DLL 3859.7 A C++ Excel name class example,xlName 3879.8 Keeping track of the calling cell of a DLL function 389

9.8.2 Obtaining the internal name of the calling cell 393

9.8.4 Internal XLL name housekeeping 3969.9 Passing references to Excel worksheet functions 398

Trang 17

xiv Contents

9.10 Multi-tasking, Multi-threading and asynchronous calls in DLLs 4019.10.1 Setting up timed calls to DLL commands:xlcOnTime 4029.10.2 Starting and stopping threads from within a DLL 4049.10.3 Calling the C API from a DLL-created thread 4059.11 A background task management class and strategy 406

9.11.2 Communication between Excel and a background thread 4079.11.3 The software components needed 4089.11.4 Imposing restrictions on the worksheet function 409

9.11.6 Creating, deleting, suspending, resuming the thread 411

9.11.8 The task interface and main functions 413

9.11.10 Configuring and controlling the background thread 4169.11.11 Other possible background thread applications and

9.13.4 Version-dependent workbook recalculation results 433

9.14.3 Excel calculation optimisation 441

10 Example Add-ins and Financial Applications 451

10.2.1 Pseudo-random number generation 46410.2.2 Generating random samples from the normal distribution 46710.2.3 Generating correlated random samples 46810.2.4 Quasi-random number sequences 469

10.3 Matrix functions – eigenvalues and eigenvectors 474

10.7 Building and reading discount curves 502

Trang 18

10.9.1 Using Excel and VBA only 507

10.9.3 Using worksheet functions only 511

Trang 20

Preface to Second Edition

Since the publication of the first edition of this book late in 2004, Microsoft haveannounced the release of Excel 2007 (version 12), one of the most important new releasessince Excel 97 (version 8) For those developing add-ins in C and C++ so little changedbetween Excel 97 and Excel 2003 (version 11) that the entire first edition applied almostequally to versions 8, 9, 10 and 11 Excel 2007 introduces some important and long-awaited changes that have a significant impact on the text of this book, which has beenupdated to reflect these new features

For the first time in many releases, the Excel team have updated parts of the C APIinterface to allow XLL add-in writers to take advantage of some of these new features.The three areas that have the biggest impact are the introduction of multi-threaded recal-culation, a worksheet grid over 1,000 times larger than is supported in previous versions,and support in the C API for 32Kbyte Unicode strings The implications for XLLs ofthese changes and others are fully explored in this edition

Beyond matters relating to Excel 2007, this edition adds a great deal of new material

to the first There is a much expanded section of Excel’s recalculation logic, intended tohelp you minimise calculation times and maximise control, as well as a new section thatspcifically addresses optimisation of calculations, both in the add-in and in the workbook.The example C++ class described in the first edition that wraps thexloperdata type hasnot only been enhanced to handle the new Excel 2007 data types but also to wrap calls

to the C API as well There is a new section relating to add-in design, covering issuessuch as good practice for the separation of interfaces, and techniques for controlling thepropagation of errors through a workbook

There are numerous other small additions and modifications to the original text, notsignificant enough to warrant mention here As you would expect, the known errors andomissions in the original text have also been fixed, although readers are asked to bear inmind that the writing constraints of such a book mean that bug-free can only ever be agoal not a promise where code samples are concerned

Beyond this, new material relates to a few practical applications These tend to bethose that are most relevant to the professional derivatives markets, but will I hope, stillprovide some useful insights for people outside this world There is a little more aboutinterpolation The section relating to the Gaussian normal distribution is revised and nowtakes a more sensible Excel version-specific approach, which also serves as an example

of backwards-compatible and version-aware add-in funtionality

Trang 21

xviii Preface to Second Edition

There are two new sections relating to the commonly-used stochastic volatility modelSABR, and the pricing of some constant maturity swap (CMS) derivatives Neither ofthese two sections is intended to serve as a model reference for the finance industry, or asexamples of what is correct from a strict quantitative analytical point of view Instead, theyare intended to provide a little more substance to the, sometimes subtle, considerations

of fitting mathematical models into Excel in a sensible way

The level of C++ knowledge assumed in this edition is slightly greater than the first,though still not requiring advanced skills This allows treatment of a number of program-ming problems in a more mature way, making greater use of the power of C++ to harnesssome of the messier aspects of the C API

The sample code provided in the text and on the CD ROM, though in places unchangedfrom the first edition, is nevertheless significantly different in many places and augmented

by new modules and functionality This is at the expense of compatibility between code

in the first and second edition’s CD ROMs The point to stress is that this book is not asoftware product as such, and changes are not a software upgrade The reader should notassume any backwards compatibility

Finally, I hope that this edition is now sufficiently complete and error-free to serve as

a useful reference and guide for many years to come

Trang 22

Preface to First Edition

This book is intended to provide the reader with a guide to the issues involved withcreating powerful and reliable add-ins for Excel With years of use, many people build

up the experience and understanding needed to create custom functions for Excel in Cand C++ However, given the very limited books and resources available, this can be alargely trial-and-error process The motivation in writing this book is to create something

I wish I had had through the years: a coherent explanation of the relevant technology,what steps to follow, what pitfalls to avoid, and a good reference guide With these things

at your side, writing C/C++ DLL and XLL resources can be almost as easy as writingthem in Visual Basic, but yields the enormous performance benefit of compiled C/C++and the Excel C API

In setting goals for this book, I was particularly inspired by two excellent books that Ihave grown to admire more and more over the years, as they have repeatedly proven their

worth; The C Programming Language (Kernighan and Ritchie) and Numerical Recipes

in C (Press, Teukolsky, Vetterling and Flannery), albeit that the style of C-coding of the

latter can be somewhat dense If this book achieves a fraction of the usefulness of either

of these then you will, I hope, be happy to own it and I will be happy to have written it.This book is intended for anyone with at least solid C and/or C++ foundation skills, agood working knowledge of Excel, a little experience with VBA (though not necessary)and the need to make Excel do things it doesn’t really want to do, or do them faster,more cleanly, more flexibly A reasonable grasp of basic software development concepts

and techniques is assumed (Section 1.1 Typographical and code conventions used in this book, on page 1, provides more detail of the coding style of the examples given.)

The example add-in project included on the CD ROM is intended to demonstrate some

of the most important or difficult concepts described in the book, as well as the possibilitiesthat are opened up when you can really play with Excel These reflect my professionalbackground in the financial markets, although if you are not of that world, you shouldstill find that the techniques described are very widely applicable

There is an enormous amount of material that could have been included in a book on thissubject that has either been pared down to the briefest of coverage or omitted completely

I fully accept that there will be those who, perhaps rightly, feel that certain things shouldhave been covered in a book that boasts such a title, and I can only apologise Any futureeditions will, I hope, provide an opportunity to rectify the most heinous and unpopular

of these shortcomings

Trang 23

xx Preface to First Edition

The first spreadsheet application I encountered was a version of Visicalc in 1984 thatran on a 64K RAM Atari games console It was dizzyingly slow and I had no practicaluse for it at the time Nevertheless, all the essential elements of a modern spreadsheetapplication were there Like the bicycle, many improvements have been made since thevery early versions but the basic design was virtually right first time Spreadsheet usershave continued to find applications well beyond the intentions of early designers It’s asafe bet that spreadsheets will be an important tool for many decades to come It’s alsosafe to say that, for some people, what comes out of the box will never be enough Thisbook is for those people

Trang 24

Acknowledgements for the First Edition

I would like to acknowledge and sincerely thank the following people: Alister Mortonfor first demystifying the C API for me many many years ago; Sean Storey for his helpwith certain C++ language and style points and for his general input and proof-reading;Fredrik Wahlgren for his very valuable help with the section on COM and automation,and for his general comments; Mike Trutt for his proof-reading and comments on writingstyle; Rob Bovey for his early comments and encouragement, and for his later help; MikeClinch for his consistently good advice without which life would be very much moredifficult; Les Clewlow and Chris Strickland for their perspective as authors and for theirencouragement as friends and lastly, all those who’ve had to put up with me having one,rather boring and obsessive, topic of conversation for the time it has taken to completethis first edition

Trang 26

Acknowledgements for the Second Edition

I would like to thank the Excel product team at Microsoft, in particular David Gainer,for including me in the Beta testing group for Excel 2007, which enabled me to includethe new material in this book by a deadline that precedes the release of this new version

I would also like to thank Martin Winnick and Matthew Haigh for their review andcomments regarding some of the new material from Chapter 10 Most of all I would like

to thank my wife Trish for her countless hours of invaluable help and for, once again,putting up with a husband who can’t seem to stop working 7 days a week no matter howmuch he tries to have a normal life

Trang 28

1 Introduction

1.1 TYPOGRAPHICAL AND CODE CONVENTIONS USED

IN THIS BOOK

To distinguish between the text of the book, Visual Basic code, C/C++ code, and Excelworksheet functions, formulae and cell references, the following fonts are usedthroughout:

Excel functions and formulae

Windows application menus and control button text

Visual Basic code

C/C++ code

Directory paths, file names and file masks

Passages of source code appear as boxed text in the appropriate font

The spelling and grammar used throughout this book are British Isles English, with the

occasional US variation such as dialog.

Examples of non-VB code are mostly in C++-flavoured C That is, C written in C++source modules so that some of the useful C++ features can be used including:

• the declaration of automatic variables anywhere in a function body;

• the use of thebooldata type with associated trueandfalsevalues;

• the use of call-by-reference arguments;

• C++ style comments

C functions and variables are written in lower case with underscores to improve ity, for example, c_thing In the few places C++ classes are used, class and instancenames and member functions and variables are written in proper case, and in general,without underscores, for example,CppThing Class member variables are prefixed with

readabil-‘m_’ to clarify class body code Beyond this, no coding standard or variable naming vention is applied Names of XLL functions, as registered with Excel, are generally inproper case with no underlines, to distinguish them from Excel’s own uppercase functionnames, for example,MyAddInFunction

con-Where function names appear in the book text, they appear in the appropriate fontwith trailing parentheses but, in general, without their arguments For example, a C/C++function is written as c_function() or CppFunction() and an Excel worksheetfunction is written asExcel_Function() VB functions may be written as VB_Function(),

or simply VB_Function where the function takes no arguments, consistent with VBsyntax

Trang 29

2 Excel Add-in Development in C/C++

Code examples mostly rely on the Standard C Library functions rather than, say, theC++ Standard Template Library or other C++ language artefacts Memory allocation andrelease usemalloc(), calloc()and free(), rather than new and deleteor theWin32 global memory functions (There are a few exceptions to this.) This is not becausethe choice of the C functions is considered better, but because it is a simple commondenominator It is assumed that any competent programmer can alter the examples given

to suit their own preferences String manipulation is generally done with the standard

C library functions such as strchr(), rather than the C++ String class (There issome discussion ofBSTRstrings and the functions that handle them, where the topic isinteroperability of C/C++ DLLs and VB.)

The standard C library sprintf() function is used for formatted output to stringbuffers, despite the fact that it is not type-safe and risks buffer overrun (The book avoidsthe use of any other standard input/output routines.)

The object oriented features of C++ have mostly been restricted to two classes Thefirst is thecpp_xloper, which wraps the basic Excel storage unit (the xloper) andgreatly simplifies the use of the C API The second is the xlName which simplifiesthe use of named ranges (Strictly speaking, defined names can refer to more than justranges of cells.) There are, of course, many places where an add-in programmer mightfind object-abstraction useful, or the functionality of the classes provided in this booklacking; the choice of how to code your add-in is entirely yours

C++ throw and catch exception handling are not used or discussed, although it is

expected that any competent C++ programmer might, quite rightly, want to use these.Their omission is intended to keep the Excel-related points as the main focus

Many other C++ features are avoided in order to make the code examples accessible

to those with little C++ experience: namespaces, class inheritance and friends, streamsand templates These are all things that an experienced C++ programmer will be able toinclude in their own code with no problem, and are not needed in order to address theissues of interfacing with Excel

The C++ terms member variable and member function, and their VB analogues property and method, are generally used in the appropriate context, except where readability is

improved

Throughout the book, where information is Excel version-specific, the version to which

it applies is sometimes denoted as follows: [v11–] for versions up to and including 11(Excel 2003); [v12+] for versions 12 (Excel 2007) and later; and so on (See section 1.3below)

1.2 WHAT TOOLS AND RESOURCES ARE REQUIRED

TO WRITE ADD-INS

Licensed copies of a 32-bit version of Excel and a 32-bit Windows OS are both assumed.(16-bit systems are not covered by this book) In addition, and depending on how andwhat you want to develop, other software tools may be required, and are described in thissection Table 1.1 summarises the resources needed for the various levels of capability,starting with the simplest

Ngày đăng: 12/08/2014, 17:20

TỪ KHÓA LIÊN QUAN