我需要知道如何计算美国假期.我需要一个适用于任何年份的解决方案.我不想简单地将日期存储在需要维护的数据库中.
对于周末的假期,它需要遵循美国政府的政策来适应工作日.如果它在星期六下降,则调整为星期五.如果它在星期日,它需要调整到星期一.我知道美国的很多(大多数?)银行也是这样做的.
如何计算美国假期列表?
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) 我有这个代码在我的文件夹中搜索.我有一个带有"草图"主题的电子邮件,但是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) 如何从正在运行的对象中获取进程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").Application或XLApp = GetObject("", "Excel.Application")如果用户已经打开Excel窗口使用正确的Excel对象有点棘手.我需要一个更好的选择.
我不能使用GetActiveObject或BindToMoniker获取Excel对象,因为它们仅在使用早期绑定时才能工作.例如Microsoft.Office.Interop.Excel
如何从正在运行的对象中获取进程ID?
编辑:其实我真的不想对如何让Excel很好地退出进行重新考虑.许多其他问题都解决了这个问题 在这里和这里我只想杀死它; 干净,准确,直接.我想要杀死我开始的确切过程而不是其他过程.
希望有人能帮忙。我需要用特定的字符串填充单元格范围内的任何空白/空单元格。我也不知道最后一行将在该范围内,因此我首先要查找该行,因为该行代码已用于脚本中的另一个函数,所以我知道该行代码可以工作。以下是我正在使用的代码:-
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)
我在运行代码时似乎没有得到任何编译错误,但这只是行不通,我仍然有相同的空白/空单元格。
谁能告诉我我在做什么错?
我已经看过很多文章和问题,关于如何确保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) 但是如何将其发送到第二个远程桌面。我正在远程访问服务器,然后在远程会话中,我正在对台式计算机进行第二次远程操作。那么如何将这个组合键连接到第二台远程计算机(台式计算机)呢?
我会从这里直接远程连接到第二台计算机,但我不知道 IP 地址,计算机名称也无法从这里解析。这些是次要问题;我的问题是如何将 Ctrl-Alt-Del 发送到远程 > 远程计算机。
我需要LPOLESTR(长指针OLE字符串)作为简单函数调用的参数.
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类型的变量或常量?
我喜欢添加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",)))))))