Tag: 自动化

使用WMI在VBA中获取当前的Windows用户名

我想知道是否有一个简单的方法来使用WMI来获取当前的Windows用户名和域名。 Windows API调用只是简单的用户名,所以你最终会再次调用域名。 我有一些代码,但我得到一个自动化错误。 有任何想法吗? 我认为我走在正确的道路上,但是我对WMI有点新鲜。 函数GetFullName()作为string 昏暗的电脑作为string 电脑=“。” Dim objWMIService,colProcessList As Object 设置objWMIService = GetObject(“winmgmts:\\”&computer&“\ root \ cimv2”) 设置colProcessList = objWMIService.ExecQuery _ (“selectTOP 1 *从Win32_Process WHERE名称='EXCEL.EXE'”) Dim uname,udomain As String Dim objProcess As Object 对于每个objProcess在colProcessList中 objProcess.GetOwner uname,udomain 下一个 GetFullName = UCase(udomain)&“\”&UCase(uname) 结束function 更新:请参阅接受的答案

如何在com自动化中启动特定的excel版本?

我通过COM自动化(在C#中)使用Excel,但似乎问题无法控制哪个版本的Excel是开始在盒子上 – 我们同时使用Excel 9和Excel 11和一套特定的电子表格需要excel 9否则他们不会工作。 我包括了excel 9 com引用,但在另一个人机器excel 11开始。 我怎样才能解决这个问题 ?

是可以通过COM插入图像到Excel单元格?

我已经使用自动化将值插入单元格,但是我从来没有见过任何文档,例如,显示插入除文本和/或公式之外的任何其他文档。 有没有人能够从外部应用程序插入图像?

如何以编程方式生成申请表格/文件?

目前,我们使用MS WORD和MS EXCEL来发送需要发送给多个收件人的合并文档。 例如,有一个投诉表格,投诉人需要填写他/她的姓名,地址等。因此,我们有一个.doc文件,设置内容和为邮件合并设置的dynamic实体,名称和地址的详细信息放在一个Excel文件,从那里我们可以愉快地邮件合并生成全部或只是必要的表格/文件。 不过,我想自动化这个过程,就像投诉人填写他/她的姓名,地址和其他细节的网站表格一样,我们可以自动生成投诉表格并提供下载(最好作为pdf)。 现在,想到的唯一解决scheme是Latex,所以我可以只replace所需的实体,并编译成PDF。 但是,如果他们提供Latex,那么这个位必须和Webhost协商。 有没有其他解决scheme? 任何其他方式,我们可以做到这一点,对于大多数虚拟主机解决scheme提供的东西不应该是一个问题? 编辑:我宁愿一个非.NET或非微软的解决scheme,因为,服务器正在运行的Linux,而单声道可能能够完成工作,我们的开发人员都不知道任何.NET语言。 但是,如果需要的话,我们可能不得不忍受。

Delphi的Excel自动化的Excel获取文本和价值

我正在寻找在Delphi 7中使用Ole Automation在Excel电子表格中提取给定范围内的每个单元格的文本。 刚刚我有一个函数(假设工作簿已经打开)从工作表中select一个范围,并使用.Value2函数填充一个Variant数组 function GetExcelRange(const AWorkbookIndex: integer; const AWorksheetIndex: integer; const firstCol, lastCol, firstRow, lastRow: integer): Variant; var AWorkbook, ARange: OleVariant; begin Result := Unassigned; if not VarIsEmpty(ExcelApp) then begin if ExcelApp.Workbooks.Count >= AWorkbookIndex then begin AWorkbook := ExcelApp.Workbooks[AWorkbookIndex]; try if AWorkbook.Worksheets.Count >= AWorksheetIndex then begin; ARange := AWorkbook.WorkSheets[AWorksheetIndex].Range[AWorkbook.WorkSheets[AWorksheetIndex].Cells[firstRow, firstCol], AWorkbook.WorkSheets[AWorksheetIndex].Cells[lastRow, lastCol]]; Result := […]

如何使Excel VBA自动执行所有最终用户

我写了下面的代码,以便当Excel电子表格被closures时,它将更新它的名称与当前的date和时间: Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.Name = "Name_Last Opened-" & Format(Date, "MM-DD-YYYY") & _ "_" & Format(Time, "HH.MM") & ".xls" Then Else ThisWorkbook.SaveAs Filename:="\\C:\… Name_Last Opened-" & _ Format(Date, "MM-DD-YYYY") & "_" & Format(Time, "HH.MM") & ".xls" FName = Sheets("Name").Range("D1").Text Kill FName End If End Sub Private Sub Workbook_Open() Range("A1").Select ActiveCell.FormulaR1C1 = ThisWorkbook.Name […]

运行检查失败#0 – ESP的值未正确保存

我试图从C ++代码编译Excel自动化访问的例子,我得到以下错误:“运行时检查失败#0 – ESP的值没有正确保存跨函数调用。这通常是调用函数声明与一个调用约定与一个不同的调用约定声明的函数指针“。 我已经在互联网上发现并阅读了大量关于这个错误的信息,但是仍然无法明白我应该在代码中修复哪些信息才能使其工作。 请查看代码: #include <windows.h> #include <oleacc.h> #import "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" no_implementation rename("RGB", "ExclRGB") rename("DocumentProperties", "ExclDocumentProperties") rename("SearchPath", "ExclSearchPath") #import "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB" no_implementation #import "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" rename("DialogBox", "ExclDialogBox") rename("RGB", "ExclRGB") rename("CopyFile", "ExclCopyFile") rename("ReplaceText", "ExclReplaceText") BOOL EnumChildProc(HWND hwnd, LPARAM) { WCHAR szClassName[64]; if(GetClassNameW(hwnd, szClassName, 64)) { if(_wcsicmp(szClassName, […]

IE11框架通知栏保存button

在使用MS Excel 2010和IE11的64位系统上,我使用此代码从网站自动执行下载过程: hWnd = FindWindowEx(IE.hWnd, 0, "Frame Notification Bar", vbNullString) If hWnd Then hWnd = FindWindowEx(hWnd, 0&, "Button", "Save") End If If hWnd Then SetForegroundWindow (hWnd) Sleep 600 SendMessage hWnd, BM_CLICK, 0, 0 End If 一切正常,直到框架通知栏出现。 我得到这个窗口的HWND,但不能得到“保存”button的HWND,所以我可以发送点击它。

从Excel,自动化或ADODB中的单个单元格读取VBScript?

不是一个编码器,第一次问一个问题…所以请容易! 在空中graphics应用程序中使用VBScript。 我有两种方法可用于从Excel电子表格中读取数据。 我认为他们被称为自动化和ADODB连接。 我可以同时工作,但这里有一个问题:自动化比较慢,但它可以轻松读取单个单元。 ADODB超级快,但我不能指向单个单元格,只能列。 那有意义吗? 我希望能够使用ADODB来读取单个单元格。 我疯了吗? 这是我的代码: 自动(工作,但需要10秒钟): Dim SelectedboxSpreadsheet 'InputBox: ask for spreadsheet Dim shell : Set shell = CreateObject("Shell.Application") Dim boxSpreadsheet : Set boxSpreadsheet = shell.BrowseForFolder(0, "Select box Spreadsheet:", &H4000, "%SystemRoot%\explorer.exe") SelectedboxSpreadsheet = boxSpreadsheet.self.path Dim objExcel Dim currentWorksheet Dim Cells Sub OpenExcelSheet(SheetNumber) Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.open SelectedboxSpreadsheet, false, true […]

delphi自动化错误Excel 2010

有谁知道为什么下面的代码不适用于Excel 2010( 家庭和小型企业Office版 )? procedure TForm1.Button1Click(Sender: TObject); var rango : OleVariant; ExcelObject : TExcelApplication; ExcelWorksheet : TExcelWorksheet; LCID : integer; begin try ExcelObject := TExcelApplication.Create (self); LCID := LOCALE_USER_DEFAULT; ExcelObject.Workbooks.Add(EmptyParam, LCID); ExcelWorksheet := TExcelWorksheet.Create(ExcelObject); ExcelWorksheet.ConnectTo(ExcelObject.Worksheets.Item [1] as _Worksheet); rango := ExcelWorksheet.Range['B2','B2']; rango.Font.size := 16; rango.Font.Bold := True; rango.Value2 := 'test'; ExcelObject.Visible[lcid] := true; except on […]