2016-09-03 4 views
-1

У меня есть много функций определения пользователя с аргументами и без. Я использую CUdfHelper из этой статьи http://www.jkp-ads.com/articles/RegisterUDF00.asp для функции регистрации.Зарегистрировать Excel UDF без аргументов

Зарегистрированная функция задает аргументы для аргументов, даже если они не являются.

Пример моей фикция без аргументов:

Public Function getProjects() 
    getProjects = Utils.execute("getProjects", "getWSEntitiesData") 
End Function 

На MyFunction.c

#include <windows.h> 

#define DLL_EXPORT __declspec(dllexport) 


DLL_EXPORT void getProjects() { 
    return; 
} 

компилировать на MyFunction.dll

зарегистрировать функцию с этими параметрами.

SetGlobalName = Application.ExecuteExcel4Macro("MyFunction.dll", "getProjets", "P", "getProjects", "", 1, "MyFunctionCategory", "", "", "Return list projects") 

Если зарегистрироваться в качестве

SetGlobalName = Application.ExecuteExcel4Macro("MyFunction.dll", "getProjets", "P", "getProjects",, 1, "MyFunctionCategory", "", "", "Return list projects") 

Диалог аргументов функции отображается все равно.

Если я зарегистрируйся

SetGlobalName = Application.ExecuteExcel4Macro("MyFunction.dll", "getProjets", "P", "getProjects",, 1, "MyFunctionCategory") 

не отображается диалоговое окно аргументов функции, но описание больше не доступно.

REGISTER() Аргументы

  1. Путь и имя DLL
  2. Имя функции вы хотите позвонить
  3. Тип Строка
  4. Имя, которое вы хотите использовать в ячейках Excel
  5. Список аргументов для использования в мастере функций
  6. Тип макроса (2 для функции, 2 для команды)
  7. Какого мастера функции категории, чтобы добавить функцию
  8. Короткого тексту вырезать, если функция регистрации является командой
  9. Пути помочь файлу
  10. Функции помощи, чтобы показать в мастере функции

11 -30 и далее текст справки для каждого аргумента в мастере функций.

Я думаю, проблема в аргументах, так как по умолчанию она установлена ​​в пустую строку, и я не могу понять, как изменить параметры функции.

На CUdfHelper

' structure definition 
Private Type REGARG 
    sDllName As String 
    sDllProc As String 
    sArgType As String 
    sFunText As String 
    **sArgText As String** 
    iMacType As Integer 
    vCatName As Variant 
    sKeyText As String 
    sHlpPath As String 
    **sFunHelp As String** 
    aArgHelp(1 To 20) As String 
End Type 

Как правильно настроить параметры так, чтобы окно не появляется, и сохраняет описание?

+1

Возможно, изменив свой код, или не зарегистрировать. Но ваш вопрос не совсем ясен. И вы не предоставляете ни один из кода, который используете. Пожалуйста, прочитайте темы HELP для [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), а также [Как создать минимальный, полный и проверенный пример] (http : //stackoverflow.com/help/mcve) –

+0

@RonRosenfeld спасибо, я обновляю свой вопрос. – martinixs

+0

Похоже, у них есть другой метод для Excel 2010 и выше http://www.jkp-ads.com/Articles/RegisterUDF01.asp – Slai

ответ

0

Если зарегистрирована функция с ExecuteExcel4Macro и задано Описание функции. Однако в надстройке XLL вы можете столкнуться с ошибкой в ​​API Excel.Ошибка отображается сама, если в ADXExcelFunctionDescriptor упоминается функция без параметров, которая имеет непустую строку в свойстве Description. Если это так, вы получите другую версию диалога «Аргументы функций».

То есть, чтобы обойти эту проблему, вам необходимо оставить свойство ADXExcelFunctionDescriptor.Description пустым.

Найти на https://www.add-in-express.com/docs/net-excel-udf-tips.php

Смежные вопросы