This is only for C-strings, not for std::string (but that may be done in a similar way or converting to the C type). The approach is similar as for 'doubles': let the Excel VBA and the DLL operate on the same memory. One 'only' has to be aware of 2 things: - a string in C is terminated by '\0' - a string in VBA constists of pairs of characters I am not sure, whether the latter persists in future versions or even in more concurrent .NET versions, since I am happy with oldish Excel. The Excel sheet has 2 examples: - deliverStringToVBA_DLL: Provide "string memory" by Excel and then fill it within the DLL by a given text, finally display it in Excel. That works for "Umlauts" as well (it is an absurd poem by Joachim Ringelnatz). - receiveStringFromVBA_DLL For that a text string in VBA is given, processed in the DLL (in the example simply the ordering is reversed) and sent back to be displayed (Karl Valentin). Enclosed sources are in VC2005, compile as C DLL, __stdcall using a def-file.