我花了一些时间编写Excel宏,这对很多公司来说都是值得的.
如何锁定宏以防止人们看到源/转发给其他人?
谢谢
我一直在使用SQL和Excel宏,但我不知道如何向单元格添加文本.
我希望将文本添加"01/01/13 00:00"
到单元格A1
.我不能只在单元格中写它,因为宏首先清除工作表的内容,然后添加信息.
我如何在VBA中做到这一点?
正如你们中的一些人所知,微软已经取消memcpy()
了安全开发生命周期,取而代之的是memcpy_s()
.
void *memcpy(void *dest, const void *src, size_t n);
/* simplified signature */
errno_t memcpy_s(void *dst, size_t dstsize, const void *src, size_t n);
Run Code Online (Sandbox Code Playgroud)
因此,如果您的代码曾经是:
if (in_len > dst_len) {
/* error */
}
memcpy(dst, src, in_len);
Run Code Online (Sandbox Code Playgroud)
它成为了:
if (memcpy_s(dst, dst_len, src, src_len)) {
/* error */
}
Run Code Online (Sandbox Code Playgroud)
或者,截断,
memcpy(dst, src, min(in_len, dst_len));
Run Code Online (Sandbox Code Playgroud)
VS
(void)memcpy_s(dst, dst_len, src, src_len);
Run Code Online (Sandbox Code Playgroud)
问题:额外长度参数如何使代码更安全?要使用memcpy()
,我应该已知所有四个参数,并将适当的长度作为第三个参数传递.什么阻止我犯错误计算目标缓冲区大小并传递错误的价值dst_size
?我不明白为什么它memcpy()
与它有任何不同以及它被弃用的原因.有没有我看不到的常见用例?我在这里错过了什么?
我在我的脚本中有以下LDAP查询(来自我之前的问题,由Bill_Stewart回答),该脚本返回来自Get-ADComputer
Windows 7的所有计算机,并带有一些排除项.
$computersFilter= "(&(operatingSystem=*Windows 7*)(name=*-*)(!name=V7-*)(!name=*-none)(!name=*-oncall)(!name=*-blackbaud)(!name=sc-win7-1)(!name=ut-swclient-01))"
Run Code Online (Sandbox Code Playgroud)
以下调用可以正常工作Get-ADComputer
:
$computers= Get-ADComputer -LDAPFilter $computersFilter -Property LastLogonDate | Select-Object Name,LastLogonDate
$computers | Select Name, LastlogonDate | Export-Csv $ServiceTagsPath -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
但是,我希望我的查询返回所有Windows 7 及更高版本的计算机,但是当我更改它时:
(&(operatingSystem=*Windows 7*)(operatingSystem=*Windows 8*)(operatingSystem=*Windows 10*)
Run Code Online (Sandbox Code Playgroud)
没有任何东西返回$computers
变量.
那么编写LDAP查询以返回Windows 7及更高版本的所有操作系统版本的正确方法是什么?
我不得不在Excel中进行一些用户数据验证,用于上传应用程序.我有一个值列表(LOV),我在Excel的下拉框中提供.这很简单.
有没有办法在下拉列表单元格中允许自由格式文本? Excel尝试针对给定的LOV验证它.我不需要用户输入的文本成为该LOV的一部分,只是可以"覆盖"或在其中添加其他文本?
我有一个带有表格的单词模板,我从使用制表符分割的字符串列表中填充.
我不知道会有多少行文字,因为它会有所不同.
所以我在迭代循环之前以编程方式添加一行,如下所示:
oWordDoc.Tables[2].Rows.Add(oWordDoc.Tables[2].Rows[1]);
Run Code Online (Sandbox Code Playgroud)
不幸的是,它是在前一行而不是在当前行之后添加行.
如何更改我的代码以在当前行之后添加空行?
我有一个XLS文件在Excel 2003上创建一个带有宏的CSV文件,我有40多列,最后3个是可选的,因此XLS上有很多空值,当我运行导出子程序时它不会放所有行上都有一个逗号,为什么?因为:http://support.microsoft.com/kb/77295 -.-
在Microsoft Office Excel中,如果以文本或CSV(逗号分隔值)格式保存文件,Excel会在工作表的每列之间放置制表符或逗号.但是,某些文本文件可能使用16行块中的不同数量的选项卡或逗号进行保存.
这是他们建议的工作:
要确保Excel为所有空列保存制表符或逗号分隔符,请验证文件中的最后一列是否包含整个文件中至少每16行的一些数据.如果行块不包含数据,请将每16行中的空格或其他字符添加到最后一列中的单元格,或者对工作表中的列重新排序,以便工作表上的最后一列始终包含信息.
去微软的方式!-.-
好的,我的主要问题是生成的文件将被我的作用域中的另一个程序解析,这需要特定的格式,因为现在我正在每16行添加一个空白,如果该字段为空,这似乎是这样做的但数据处理部门正在抱怨那个空白区......你能相信他们吗??
无论如何我还尝试添加一个标志并使用find函数删除它,但是当你保存文件时它会再次带走分隔符......
感谢您阅读我的历史; p
有什么建议 ?
编辑:不幸的是使用Excel是必须的,数据是由不同的用户通过excel表手动输入的,vba代码更像模板生成等.这是我唯一的问题,它是不可行的改变整个过程.
我试图在Windows PowerShell中获得天数差异,我正在提取一年中的最后日期即.20171231(yyyyMMdd)来自我在本地存储该文件中日期的文本文件.
这是下面的代码,我正在尝试,但无法得到天的差异,通过直接减去得到错误的输出,如果我正在转换从文件中提取的字符串,然后用日期类型减去它,即使那时我得到错误的输出.
$DateStr = (Get-Date).ToString("yyyyMMdd")
$content = Get-Content C:\Users\Date.txt
$diff = $content.ToString();
#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)
#$diff3 = $diff - $DateStr
Run Code Online (Sandbox Code Playgroud) 我使用Microsoft XML Excel和ColdFusion在Excel工作表上显示我的查询结果.我正在使用多个工作表.我看到有边境风格的房产.有没有办法为行和其他样式设置背景颜色.我没有看到关于如何做所有这些的好文档.
谢谢
我们有一个XML数字,可以在一个大的XML文件中最多3个数字,必须转换为固定长度的文本,以便加载到另一个系统.
我需要在输出中用前导零填充这个长度为15(这是固定长度的文本)
例子:
- 1 becomes 000000000000001
- 11 becomes 000000000000011
- 250 becomes 000000000000250
Run Code Online (Sandbox Code Playgroud)
我试过这个:
<xsl:value-of select="substring(concat('000000000000000', msg:BankAccount/msg:Counter), 12, 15)"/>
Run Code Online (Sandbox Code Playgroud)
在开头获取15个零并获取子字符串,但我必须在子字符串中犯了一个错误,因为在结果中我得到了
0000000000000000000000009LLOYDS BANK PLC
00000000000000000000000010LLOYDS BANK PLC
Run Code Online (Sandbox Code Playgroud)
我也试过,format-number
但它返回NaN
<xsl:value-of select="format-number(msg:BankAccount/msg:Counter, '000000000000000')"/>
Run Code Online (Sandbox Code Playgroud)
返回'NaN'
那么我做错了什么,最好的办法是什么?