VBS調用Windows API函數的代碼

來源:互聯網
上載者:User

那天無意中搜尋到一篇《WinCC VBS利用EXCEL調用Windows API函數》的文章,不知道WinCC是什麼,Google了一下好像跟西門子自動化有關。WinCC是什麼並不重要,重要的是這篇文章提供了VBS調用Windows API的一種思路——EXCEL VBA,一種傳說比VB還要VB的語言。

但是那篇文章中的例子都是使用已經寫好的EXCEL VBA程式,即首先得存在一個EXCEL檔案。我就想,能不能在VBS中通過excel.application對象建立一個包含VBA代碼的EXCEL文檔然後再調用它呢?Google來Google去,終於在微軟協助和支援中找到了方法。

結合兩篇文章(請先閱讀這兩篇文章),寫了一個樣本程式,效果是移動滑鼠至案頭左上方。如果你的EXCEL不是太盜版,雙擊這個VBS後應該可以看到效果。

複製代碼 代碼如下:Dim WshShell
set WshShell = CreateObject("wscript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
Dim oExcel, oBook, oModule
Set oExcel = CreateObject("excel.application")
Set oBook = oExcel.Workbooks.Add
Set oModule = obook.VBProject.VBComponents.Add(1)
strCode = _
"Private Declare Function SetCursorPos Lib ""user32"" (ByVal x As Long, ByVal y As Long) As Long" & vbCr & _
"Sub MyMacro(x as Long, y as Long)" & vbCr & _
"SetCursorPos x, y" & vbCr & _
"End Sub"
oModule.CodeModule.AddFromString strCode
oExcel.Run "MyMacro",0,0
oExcel.DisplayAlerts = False
oBook.Close
oExcel.Quit

前面3-5行的修改註冊表是為了讓VBS能夠完全控制EXCEL,strCode即為寫入EXCEL中的VBA代碼,至於怎樣在VBA中調用Windows API不屬於本文的討論範圍,請自己查閱資料。使用oExcel.Run "MyMacro",0,0調用我們寫入的VBA代碼。
原文:http://demon.tw/programming/vbs-excel-invoke-windows-api.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.