ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: VBA万岁

[求助] VSTO入门问题集

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 11:30 | 显示全部楼层
VBA万岁 发表于 2015-11-28 11:20
(四)如何签名?

之后VSTO便打开了如下对话框,可当我一 一打开对话框中的文件夹时,均显示“没有与搜索条件匹配的项”。请问该怎样选择密钥文件以为程序集签名?为何”为ClickOnce清单签名(M)“无法选择?

12.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 12:12 | 显示全部楼层
VBA万岁 发表于 2015-11-25 15:23
(三)如何注册与注销?

regasm程序在哪个文件夹?输入注册语句只能手工从键盘上逐个输入字符,不可 ...

我用如下路径以管理员的身份打开cmd.exe,为什么这个文件不在“%windir%\Microsoft.NET\Framework\v4.0.30319”文件夹下?它是我需要注册的regasm程序吗?C:\Windows\System32\cmd.exe如下图:


13.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 12:21 | 显示全部楼层
VBA万岁 发表于 2015-11-28 12:12
我用如下路径以管理员的身份打开cmd.exe,为什么这个文件不在“%windir%\Microsoft.NET\Framework\v4.0.3 ...

为什么不像第一个链接帖那样(如下图:)自动在cmd.exe文件中显示路径%windir%\Microsoft.NET\Framework\v4.0.30319”?


14.jpg

TA的精华主题

TA的得分主题

发表于 2015-11-28 14:35 | 显示全部楼层
VBA万岁 发表于 2015-11-28 12:21
为什么不像第一个链接帖那样(如下图:)自动在cmd.exe文件中显示路径“%windir%\Microsoft.NET\Framewor ...

不太明白.
如果你是需要强命名,在选择强名称密钥文件,的时候,就选择新建.
不过我之前好像了解到,如果本身是一个vsto项目,应该一开始,就默认生成了一个密钥了.

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 16:23 | 显示全部楼层
excelhomesnake 发表于 2015-11-28 14:35
不太明白.
如果你是需要强命名,在选择强名称密钥文件,的时候,就选择新建.
不过我之前好像了解到,如果本 ...

我在cmd.exe文件中输入以下代码:


15.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 16:27 | 显示全部楼层
excelhomesnake 发表于 2015-11-28 14:35
不太明白.
如果你是需要强命名,在选择强名称密钥文件,的时候,就选择新建.
不过我之前好像了解到,如果本 ...

回车后,cmd.exe显示如下错误。不知到底该怎样注册?


16.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 16:30 | 显示全部楼层
VBA万岁 发表于 2015-11-28 16:27
回车后,cmd.exe显示如下错误。不知到底该怎样注册?

顺便帖上类库代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.InteropServices;
  6. using Microsoft.Win32;
  7. using Microsoft.Office.Interop.Excel;

  8. namespace ExcelFunc
  9. {
  10.     [Guid("56f8f4f7-8123-446a-a197-85c173c0284f")]
  11.     [ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)]
  12.     public class Class1
  13.     {
  14.         #region COM Related
  15.         [ComRegisterFunction]
  16.         public static void RegisterFunction(Type type)
  17.         {
  18.             Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, "Programmable"));
  19.             var key = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), true);
  20.             key.SetValue("", Environment.SystemDirectory + @"\mscoree.dll", RegistryValueKind.String);
  21.         }

  22.         [ComUnregisterFunction]
  23.         public static void UnregisterFunction(Type type)
  24.         {
  25.             Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type, "Programmable"), false);
  26.         }

  27.         private static string GetSubKeyName(Type type, string subKeyName)
  28.         {
  29.             var s = new System.Text.StringBuilder();
  30.             s.Append(@"CLSID\{");
  31.             s.Append(type.GUID.ToString().ToUpper());
  32.             s.Append(@"}");
  33.             s.Append(subKeyName);
  34.             return s.ToString();
  35.         }
  36.         #endregion

  37.         public string MyConcate(params Object[] values)
  38.         {
  39.             string iStr = "";
  40.             Range iRng;
  41.             for (int iStep = 0; iStep < values.Length; iStep++)
  42.             {
  43.                 if (values[iStep].ToString() == "System.__ComObject")
  44.                 {
  45.                     iRng = (Range)values[iStep];
  46.                     if (iRng.Count > 1)
  47.                     {
  48.                         foreach (Range cRng in iRng)
  49.                         {
  50.                             iStr += Convert.ToString(cRng.Value);
  51.                         }
  52.                     }
  53.                     else
  54.                     {
  55.                         iStr += Convert.ToString(iRng.Value);
  56.                     }
  57.                 }
  58.                 else
  59.                 {
  60.                     iStr += values[iStep].ToString();
  61.                 }
  62.             }
  63.             return iStr;
  64.         }

  65.     }
  66. }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-28 20:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
excelhomesnake 发表于 2015-11-28 14:35
不太明白.
如果你是需要强命名,在选择强名称密钥文件,的时候,就选择新建.
不过我之前好像了解到,如果本 ...

参照如下链接,调出Regasm.exe(程序集注册工具),并输入注册代码,却显示如下出错信息:
Regasm.exe(程序集注册工具)

17.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-29 08:55 | 显示全部楼层
本帖最后由 VBA万岁 于 2015-11-30 08:45 编辑
VBA万岁 发表于 2015-11-28 20:15
参照如下链接,调出Regasm.exe(程序集注册工具),并输入注册代码,却显示如下出错信息:
Regasm.exe( ...


终于找问题所在了,只要将VSTO项目(ExcelFunc)保存,并得到其保存路径,然后再用它替代替88楼注册码中的引号部分即可。
至此,问题四已全部解决,附上源码如下:

ExcelHelpTaskPane.rar

434 KB, 下载次数: 25

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-29 08:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA万岁 发表于 2015-11-29 08:55
终于找问题所在了,只要将VSTO项目(ExcelFunc),并得到其保存路径,然后再用它替代替88楼注册码中的引 ...

顺便帖上效果截图:

18.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-22 23:13 , Processed in 0.039264 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表