从Excel 2010开始,我在Excel中使用了很多表.例如,我有一个表"tabWorkers"有3列:"ID","名字","姓氏".
我已经发现我可以使用[]来引用VBA中的表.例如:
Dim row As Range
For Each row In [tabWorkers].Rows
MsgBox (row.Columns(2).Value)
Next
Run Code Online (Sandbox Code Playgroud)
这将为我提供每行有效的名字..但我希望通过使用它的列名来使其更具动态:
Dim row As Range
For Each row In [tabWorkers].Rows
MsgBox (row.Columns("Firstname").Value)
Next
Run Code Online (Sandbox Code Playgroud)
当然,我可以进行某种查找,将列索引'2'绑定到类似FirstnameIndex的var,但我想要正确的语法.我确信它是可能的但是没有真正记录(比如[tabWorkers] .Rows)
使用Visual Studio 2013 Pro,我构建了我的第一个小型控制台应用程序.应该可以在我们网络中的每台计算机上快速运行此控制台应用程序.我们至少运行Windows XP SP3到Windows 8.1.
因此我创建了一个针对.NET 2.0的应用程序,但令我惊讶的是,Windows 8机器抱怨它必须为此安装/激活.NET 3.5.Windows 8默认情况下没有激活!
当我瞄准2.0时,它运行在我们的XP和W7上,而不是在W8上.当我的目标是4.0时,它运行在所有W8和一些W7上,但不在XP上运行.
这是相同的应用程序..那么真的没有办法告诉操作系统使用可用的框架吗?
我尝试将配置文件"MyAppName.exe.config"和"App.config"添加到项目中,其中包含:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我交换了订单,并针对.NET 2.0,3.0,3.5和3.5客户端配置文件.但是当不针对> = .NET 4时,W8一直要求激活.NET 3.5
如果客户端安装了.NET 2.0或更高版本,如何在XP SP3,W7和W8上运行这个小应用程序而无需安装任何额外的框架?
当一条消息得到回复或转发时,前一个线程会通过将 ie ----Original Message---- 放在它前面来附加到您的新邮件中。
Outlook 对 tekst 邮件执行相同的操作,但对于 HTML 邮件,它显示一行后跟 From:..
由于 Outlook 在这些消息之间显示一条线,我相信可以使用 VBA 减去这些消息。但是如何?
目标:当用户发送邮件 (Application_ItemSend) 时,我想扫描邮件中的某些词。但我不在乎它是否出现在以前的消息中,我只想扫描新输入的消息。
下面的示例适用于在 Outlook 中回复文本形式的电子邮件(Outlook 是英文的!)。但是在发送 HTML 电子邮件时它不起作用。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim EndOfMsg As Integer
Dim myMsg as String
EndOfMsg = InStr(Item.Body, "-----Original Message-----")
If EndOfMsg = 0 Then
myMsg = Item.Body
Else
myMsg = Left(Item.Body, EndOfMsg)
End If
MsgBox myMsg
End Sub
Run Code Online (Sandbox Code Playgroud)
所以我需要一些“令牌”来拆分,正确..但是这个令牌是什么?myMsg 和旧的 msg 之间只有一个 double vbCrLf
。与我在消息中输入新行时相同.. 没有任何独特之处!
我在表中添加了几千行,所以我需要本机javascript的速度.
目前我正在使用:
nThName = document.createElement("TH");
nThName.appendChild(document.createTextNode(workers[i].name));
nTr.appendChild(nThName);
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行中执行此操作(不会丢失任何性能?)所以我不需要nThName变量?
每行有50多个单元格,所以我更喜欢:
nTr.appendChild(document.createElement("TH").appendChild(document.createTextNode(workers[i].name)));
Run Code Online (Sandbox Code Playgroud)
但那显然不起作用..
前阵子我一直在寻找一种灵活的方法来自动为不同类型的用户生成签名。我们的网域有多家公司,每个公司都有不同的需求。进行胶凝时发现的默认脚本仅显示了如何创建基本签名。
下面的脚本需要进一步执行一些步骤。首次启动Microsoft Office时,它将填写用户名和缩写。如果没有Outlook配置文件,它将使用PRF文件设置Outlook(您可以将缓存用于笔记本电脑/平板电脑,不缓存用于台式机/服务器)。然后,它检查用户应该获得哪些签名,并使用签名文件,模板文件中的信息以及活动目录中的用户信息来构建它们。所有状态信息都会写入应用程序事件日志(过滤器WSH)。当签名文件被更新时,签名将被重新应用。
我将整个脚本发布在这里,希望其他人会发现它有用。随意发表评论(或捐赠课程:-)。它适用于Outlook 2000、2003、2010和2013(并且应在不久的将来使用)。
如何将xml元素导入对象?我下面的代码不起作用,它在SetValue失败,我无法弄清楚原因.
但即便如此,我怀疑linq有一个更清洁的方式,但我找不到任何例子.
class Printers {
public List<Printer> list = new List<Printer>();
public Printers()
{
var xDoc = XDocument.Load(Properties.Settings.Default.XmlSetupPath).Root;
var xPrinters = xDoc.Element("printers").Elements();
foreach (var xPrinter in xPrinters)
{
var printer = new Printer();
foreach (var xEl in xPrinter.Elements())
{
printer.GetType().GetProperty(xEl.Name.ToString()).SetValue(printer, xEl.Value);
}
}
}
}
class Printer
{
public string name;
public string ip;
public string model;
public string infx86;
public string infx64;
public string location;
public string comment;
}
Run Code Online (Sandbox Code Playgroud)
我的XML:
<printers>
<printer>
<name>my Printer</name>
<ip>192.168.100.100</ip>
<model>Brother</model>
<driver>ab</driver>
<infx86>ab\cd.INF</infx86>
<comment>Copycenter</comment> …
Run Code Online (Sandbox Code Playgroud) 有没有办法在我的SqlCommand中添加一个参数,如果在我的查询中没有使用它,引擎就不会抱怨?
我有大约50个参数要包含在我的查询中,但需要包含哪些参数在很大程度上取决于具体情况.我可以轻松地删除200行代码,如果我可以将它们全部置于顶部并在添加我的参数后构建我的查询.
一个非常简单/愚蠢/错误的例子(是的,这里的解决方案是在else子句中添加id)
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@name", SqlDbType.nVarChar, 250).Value = name;
if(id == null) cmd.CommandText = "INSERT INTO tab (name) VALUES (@name)";
else cmd.CommandText = "UPDATE tab SET name = @name WHERE id = @id";
Run Code Online (Sandbox Code Playgroud)
这会返回错误:
System.Data.SqlClient.SqlException:参数化查询'(@ id,@ name)'需要参数'@id',这是未提供的
如果不可能,简单的"否"就足以被接受为答案.
c# ×3
outlook ×2
outlook-2010 ×2
vba ×2
.net ×1
excel ×1
excel-2010 ×1
excel-vba ×1
gpo ×1
group-policy ×1
javascript ×1
linq ×1
linq-to-xml ×1
sql ×1
vbscript ×1
windows-8 ×1