Tag: dll

在Excel中closures对dll的访问

我目前正在使用C ++和Excel工作。 我做了一个DLL在Excel中导出一个C ++函数。 我的问题是,当我在Excel中testing我的function,我想修改我的DLL,我需要退出Excel,因为它仍然运行.dll文件,Visual Studio C + +不能删除以前的DLL来做另一个。 每次closures和重新启动Excel都有点烦人,所以我想知道在VBA脚本完成时是否有办法closures对Dll的访问。 谢谢!

在Excel中使用C ++ 2010 dll

我使用Visual C ++ 2010在c ++中构build了一个简单的dll,并试图在excel中使用它。 项目名称为“SwapFunDLL”,源文件名称为“swapmain”,包含该类的头文件的名称及其函数为“DateNTime”。 我附在下面。 代码有两个值,然后使用类函数将它们相乘,然后返回产品(我意识到类和函数没有必要,即时通讯只是这样做的学习)。 该函数编译时没有错误,但是当在Excel中使用该函数我得到一个值错误。 有人可以帮我看看我做什么错误的感谢。 标题: // DateNTime.h //Avoid need of .Def file #ifdef SwapFunDLL_EXPORTS #define SwapFunDLL_API __declspec(dllexport) #else #define SwapFunDLL_API __declspec(dllimport) #endif namespace DateNTime { class SwapFunDLL_API Date { double x,y; public: double datediff(double,double); }; double Date::datediff(double x, double y) { return x*y; } } 源文件: #include "DateNTime.h" namespace […]

VBA运行声明函数时堆损坏,但C ++控制台应用程序运行正常吗?

我正在使用Visual C ++ 2012来创build一个包装函数从VBA进行API调用。 如果它很重要,这是为Bentley ProjectWise API,我打电话给aaApi_DocumentSelectDlg() 。 当我从C ++控制台应用程序运行这个函数时,这个函数起作用,但是当我从VBA调用它并遍历函数时,API调用会导致堆损坏错误。 这是包装函数: //function for opening a file select dialog and getting the IDs associated with //that file long __stdcall FileOperator::selectFile(long* docArray) { try { //set parameters for dialog AAOPENDOCSDLG2_PARAM param={0}; param.ulMask |= AAOPENDLG2_MASK_FLAGS|AAOPENDLG2_MASK_TITLE|AAOPENDLG2_MASK_PROJECTID| AAOPENDLG2_MASK_DOCUMENTID|AAOPENDLG2_MASK_FILENAME; param.ulFlags = AAOPENDLG2_SINGLE_SELECTION | AAOPENDLG2_GET_IDS_ONLY | AAOPENDLG2_HIDEREADONLY | AAOPENDLG2_NO_USE_LASTPROJ; param.lpctstrTitle = L"Select […]

在VBA中加载DLL的函数

当我想从DLL中调用一些信息时,我被告知使用CallWindowProc命令。 但是,当我使用这个命令的时候,我卡在了hWnd部分。 这是代码: Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc […]

不能在原始编译机器以外的机器上部署.Net DLL

我已经在Visual Studio 2010 Express中编写了一个VB.NET类库。 我确保在Properties – > Application – > Assembly Information选项卡上select“Make assembly COM-Visible”。 我还确保在属性窗口的编译选项卡上select“Register for COM Interop”。 生成的DLL在编译该项目的机器上正常工作。 该DLL旨在对来自Excel的几个input数组执行一些繁重的处理,并返回一个输出数组。 我能够在VBA中添加对DLL的引用,并使用该function。 我无法弄清楚如何在其他机器上安装DLL。 我确保将.NET更新到部署机器上的当前版本。 然后我运行下面的batch file: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe“C:\ Users \ Public \ DRAPERLibrary.dll”/ codebase /tlb:DRAPERLibrary.tlb RegAsm的这个调用返回没有错误。 我可以看到Windowsregistry有一些新的引用到这个DLL,但我看不到在Excel中的DLL。 如果我手动浏览到DLL它回来的错误“无法添加指定文件的引用”。 我在哪里错了? 什么是Visual Studio创build一个Excel引用? 有什么我可以添加到我的batch file导致Excel将此DLL识别为VBA中的可用引用吗? 非常感谢您花时间回复。

使用Winforms的电子表格项目,无法复制文件错误

我正在为一个软件工程类开发一个简单的Excel项目。 这是我第一次写一个DLL,并使用INotifyPropertyChanged。 我收到这些错误: 错误13无法将“SpreadsheetEngine \ bin \ Debug \ SpreadsheetEngine.dll”复制到“bin \ Debug \ SpreadsheetEngine.dll”。 超过了10.失败的重试次数。“ 错误14无法将文件“SpreadsheetEngine \ bin \ Debug \ SpreadsheetEngine.dll”复制到“bin \ Debug \ SpreadsheetEngine.dll”。 该进程无法访问文件'bin \ Debug \ SpreadsheetEngine.dll',因为它正在被另一个进程使用。“ 这些错误真的让我回头,我很感激任何帮助找出他们。 这是我的DLL类: namespace SpreadsheetEngine { public abstract class Cell : INotifyPropertyChanged { private int RowIndex; private int ColumnIndex; protected string Text; protected string Value; […]

Excel VBA中的C#COM互操作DLL

当试图从一个已经存在的DLL源代码构build一个在Excel VBA中使用的DLL时,我陷入了第一步。 源代码看起来像这样 using System; using System.Runtime.InteropServices; using System.Text; namespace ZCon { public class ZConsts { #if __MonoCS__ public const string ZLibrary = "zcon.so"; #else public const string ZLibrary = "zcon.dll"; #endif } public class ZClient { [DllImport(ZConsts.ZLibrary)] protected static extern int WriteIt(IntPtr Client, int Len, byte[] Buffer); public int WriteArea(int Len, byte[] Buffer) { […]

有没有这个Excel VBA函数定制DLL的x64执行?

我从互联网上find几年前由Laurent Longre提供的以下Excel VBA函数定制工具: 主页: http : //www.xcell.excelabo.net/funcustomize 下载链接: http : //www.xcell.excelabo.net/clic?fichier=funcustomize 这是为32位(Excel 95/97/2000/2002)版本添加的FUNCUSTOMIZE.DLL。 这个免费的加载项允许在Excel的function向导中定制VBA用户定义的函数: 为每个参数添加描述性文本 将用户定义的函数存储在新类别中(例如“FunCustomize demo”) 但是,没有源代码发布,并且当前添加的内容通常会导致x64 windows 8.1平台上的Excel2013崩溃。 我想知道如何用C / C ++ / C#重新创build相同的实现,以便为最新的Excel版本和Windows平台修改它?

将一个DLL(和相关的VBA)转换成一个XLL

作为一个暑期项目,我收到了一个大量的C ++文件(50多个函数),并被要求与Excel进行交互。 我从C ++文件创build了一个DLL,并编写了一些VBA过程来创build函数包装器,函数向导,并使用正确的数据填充单元格范围。 因为我必须把它交给其他人,所以我想把它变成一个XLL插件,这样VBA中“声明函数”中DLL的path不会被破坏,而且还有一个更清晰的设置。 我的问题是,在将其转换为XLL加载项的过程中,VBA代码变成了什么? 这些函数是否必须重新写入C ++文件? 克里斯

整数/长从excel里面(VBA的和c ++的)VARIANT作为一个双

我有以下的c + +代码: #include <OAIdl.h> // for VARIANT, BSTR etc __declspec(dllexport) void __stdcall updatevar(VARIANT * x) { double nb = 3.0; ++nb; } 有一个函数做(几乎)没有(避免警告) 和一个.def文件: LIBRARY tmp0 EXPORTS updatevar @1LIBRARY 我用visual studio 2013编译成一个dll,我在excel-2013的VBA中引用如下: Declare Sub updatevar Lib "C:\path\to\thedll.dll" (ByRef x As Variant) 而且我使用这样的: Public Sub DoIt() Dim r As Range Set r = ActiveWorkbook.Sheets("Sheet1").Range("B2:C4") Dim […]