小编D_B*_*ter的帖子

如何计算美国的假期

我需要知道如何计算美国假期.我需要一个适用于任何年份的解决方案.我不想简单地将日期存储在需要维护的数据库中.

对于周末的假期,它需要遵循美国政府的政策来适应工作日.如果它在星期六下降,则调整为星期五.如果它在星期日,它需要调整到星期一.我知道美国的很多(大多数?)银行也是这样做的.

如何计算美国假期列表?

Public Function getHolidayList(ByVal vYear As Integer) As List(Of Date)

    Dim HolidayList As New List(Of Date)

    '...fill the list with holidays 
    ' New Year's Day            Jan 1
    ' Martin Luther King, Jr. third Mon in Jan
    ' Washington's Birthday third Mon in Feb
    ' Memorial Day          last Mon in May
    ' Independence Day      July 4
    ' Labor Day             first Mon in Sept
    ' Columbus Day          second Mon in Oct
    ' Veterans Day          Nov 11
    ' Thanksgiving Day      fourth …
Run Code Online (Sandbox Code Playgroud)

vb.net

12
推荐指数
3
解决办法
1万
查看次数

在Outlook中进行VBA搜索

我有这个代码在我的文件夹中搜索.我有一个带有"草图"主题的电子邮件,但是VBA没有找到它(它转到ELSE子句)

任何人都可以说出错了吗?

Set olApp = GetObject(, "Outlook.Application")

Set olNs = olApp.GetNamespace("MAPI")
Set olFldr = olNs.GetDefaultFolder(olFolderInbox)
Set olItms = olFldr.Items

Set Mail = olItms.Find("[Subject] = ""*sketch*""") 'Tracking
If Not (Mail Is Nothing) Then
    'use mail item here

Else
    NoResults.Show
End If
Run Code Online (Sandbox Code Playgroud)

vba outlook-vba

9
推荐指数
2
解决办法
4万
查看次数

如何从创建的"Excel.Application"对象中获取进程ID?

如何从正在运行的对象中获取进程ID?

Dim xlApp As Object  = CreateObject("Excel.Application")
Run Code Online (Sandbox Code Playgroud)

我需要使用后期绑定,因为我无法保证我将获得哪个版本,因此使用Microsoft.Office.Interop.Excel将无法正常工作.

'do some work with xlApp

xlApp.Quit
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
xlApp = nothing
Run Code Online (Sandbox Code Playgroud)

此时Excel仍在后台运行.我熟悉使用变量的所有建议并释放它们然后使用:System.Runtime.InteropServices.Marshal.ReleaseComObject(o).这不能可靠地工作.我正在做的工作非常复杂.我使用多个文件用于每个循环等.无法在Excel中释放所有资源.我需要一个更好的选择.

我想Process.Kill在Excel 上使用,但我不知道如何从xlApp对象获取进程.我不想杀死所有Excel进程,因为用户可能打开了工作簿.

我尝试使用Dim xProc As Process = Process.Start(ExcelPath)然后使用xProc.Kill()有时工作除了使用XLApp = GetObject("Book1").ApplicationXLApp = GetObject("", "Excel.Application")如果用户已经打开Excel窗口使用正确的Excel对象有点棘手.我需要一个更好的选择.

我不能使用GetActiveObjectBindToMoniker获取Excel对象,因为它们仅在使用早期绑定时才能工作.例如Microsoft.Office.Interop.Excel

如何从正在运行的对象中获取进程ID?

编辑:其实我真的不想对如何让Excel很好地退出进行重新考虑.许多其他问题都解决了这个问题 在这里这里我只想杀死它; 干净,准确,直接.我想要杀死我开始的确切过程而不是其他过程.

vb.net excel

8
推荐指数
2
解决办法
3万
查看次数

用字符串值替换空白/空单元格

希望有人能帮忙。我需要用特定的字符串填充单元格范围内的任何空白/空单元格。我也不知道最后一行将在该范围内,因此我首先要查找该行,因为该行代码已用于脚本中的另一个函数,所以我知道该行代码可以工作。以下是我正在使用的代码:-

    LastRow = Cells(Rows.Count, 2).End(xlUp).Row

    For Each r In Range("AS22:AU" & LastRow)
        If r.Value2 = vbNullString Then
            r.Value2 = "Greens"
        End If
    Next
Run Code Online (Sandbox Code Playgroud)

我在运行代码时似乎没有得到任何编译错误,但这只是行不通,我仍然有相同的空白/空单元格。

谁能告诉我我在做什么错?

vbscript excel vba excel-vba

5
推荐指数
1
解决办法
8238
查看次数

为什么杀掉Excel进程是个坏事?

我已经看过很多文章和问题,关于如何确保Excel实际上在你想要的时候退出并且这个过程不能保持活力.这是一篇描述该问题的知识库文章和Microsoft推荐的解决方案.实质上:

'close files

'Quit Excel
xlApp.quit()

'Release and collect garbage
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp)
GC.Collect()
GC.WaitForPendingFinalizers()
Run Code Online (Sandbox Code Playgroud)

很多人不建议杀死这个过程; 请参见 如何正确清理Excel互操作对象了解.net中的垃圾收集

另一方面,许多人不建议使用GC.Collect.请参阅使用GC.Collect()有什么错误?

根据我的经验,杀死该过程是确保Excel消失的最快速,最简单的方法.我的代码只会杀死它启动的确切进程,而不会杀死其他进程.我确保关闭所有打开的工作簿,退出应用程序并释放xlApp对象.最后,我检查过程是否仍然存在,如果是,那么杀死它.

<System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, _
ByRef lpdwProcessId As Integer) As Integer
    End Function

Sub testKill()

    'start the application
    Dim xlApp As Object = CreateObject("Excel.Application")

    'do some work with Excel

    'close any open files

    'get the window handle
    Dim xlHWND As Integer = xlApp.hwnd

    'this will have the process ID …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net excel excel-interop

4
推荐指数
1
解决办法
2017
查看次数

Ctrl Alt Del 到远程 &gt; 远程桌面

我已经知道如何发送Ctrl- Alt-Del到远程桌面。

但是如何将其发送到第二个远程桌面。我正在远程访问服务器,然后在远程会话中,我正在对台式计算机进行第二次远程操作。那么如何将这个组合键连接到第二台远程计算机(台式计算机)呢?

我会从这里直接远程连接到第二台计算机,但我不知道 IP 地址,计算机名称也无法从这里解析。这些是次要问题;我的问题是如何将 Ctrl-Alt-Del 发送到远程 > 远程计算机。

remote-desktop

4
推荐指数
1
解决办法
6396
查看次数

如何创建LPOLESTR类型的变量或常量?

我需要LPOLESTR(长指针OLE字符串)作为简单函数调用的参数.

根据C++字符串完整指南,第二部分 - 字符串包装类

OLECHAR是一个Unicode字符(wchar_t)

LPOLESTR是一串OLECHAR(OLECHAR*)

所以我应该能够做到这一点:

int demo(LPOLESTR ptName) {
    return 1;
}

int main(){

    demo(L"Visible");
}
Run Code Online (Sandbox Code Playgroud)

但我收到编译错误:

(const wchar_t [8])L"可见"

"const wchar_t*"类型的参数与"LPOLESTR"类型的参数不兼容

或者我可能会尝试一个变量:

LPOLESTR lVis = L"Visible";
Run Code Online (Sandbox Code Playgroud)

但我得到这个编译器错误:

(const wchar_t [8])L"可见"

"const wchar_t*"类型的值不能用于初始化"LPOLESTR"类型的实体

#include <string>在顶部.

这似乎应该是一件简单的事情,但我整个上午一直在谷歌搜索,无法找到答案.如何在C++中创建LPOLESTR类型的变量或常量?

c++

2
推荐指数
1
解决办法
401
查看次数

如何在excel中获得54个嵌套级别

我喜欢添加54个IF嵌套我尝试添加&选项通过在每8个之后打破它们,因为我已经完成它只允许额外的8个嵌套然后其余的不起作用.我有什么方法可以解决这个问题吗?

=IF(E9<231,"1",IF(E9<321,"2",IF(E9<411,"3",IF(E9<501,"4",IF(E9<591,"5",IF(E9<681,"6",IF(E9<771,"7",IF(E9<861,"8",)))))))))IF(E9<951,"9",IF(E9<1041,"10",IF(E9<1131,"11",IF(E9<1221,"12",IF(E9<1311,"13",IF(E9<1401,"14",IF(E9<1491,"15",IF(E9<1581,"16",))))))))IF(E9<1581,"16",IF(E9<1671,"17",IF(E9<1761,"18",IF(E9<1851,"19",IF(E9<1941,"20",IF(E9<2031,"21",IF(E9<2121,"22",)))))))IF(E9<2211,"23",IF(E9<2301,"24",IF(E9<2391,"25",IF(E9<2481,"26",IF(E9<2571,"27",IF(E9<2661,"28",IF(E9<2751,"29",IF(E9<2841,"30",)))))))) IF(E9<2931,"31", IF(E9<3021,"32", IF(E9<3111,"33",IF(E9<3201,"34", IF(E9<3291,"35", IF(E9<3381,"36", IF(E9<3471,"37", IF(E9<3561,"38",)))))))) IF(E9<3651,"39", IF(E9<3741,"40", IF(E9<3831,"41", IF(E9<3921,"42", IF(E9<4011,"43", IF(E9<4101,"44", IF(E9<4191,"45", IF(E9<4281,"46",)))))))) IF(E9<4371,"47", IF(E9<4461,"48", IF(E9<4551,"49", IF(E9<4641,"50", IF(E9<4731,"51", IF(E9<4821,"52", IF(E9<4911,"53", IF(E9<5001,"54",)))))))

excel

1
推荐指数
1
解决办法
61
查看次数