0
我想要使用Windows 8 Location API來從內置傳感器獲取GPS座標,並將這些座標返回給MS Access。但是,由於API中使用的不支持的變體類型,Access無法可靠地使用其對象。我試圖想出一個使用VBScript文件的解決方法,並以某種方式將值返回給MS Access(使用2010和2013)。我能想到的最簡單的方法是吐出一個txt文件,通過Access讀取然後刪除。VBS文件僅在雙擊時才起作用
當我從Windows資源管理器(雙擊該文件)運行它時,我的VBS文件完美地工作,但是我無法找到一種方法使它在從VBA代碼運行時正常工作。這裏是VBS文件:
Dim latlongfactory
Dim rptLong, rptLat
Dim report
Dim keepSleeping
Dim fs, f
Dim ts
Set latlongfactory = Wscript.CreateObject("LocationDisp.LatLongReportFactory", "llf_")
Set fs = Wscript.CreateObject("Scripting.FileSystemObject")
f = fs.BuildPath(CurrentDirectory, "gpsTempFile.txt")
keepSleeping = True
latlongfactory.ListenForReports(1000)
Sub llf_NewLatLongReport(report)
rptLong = report.Longitude
rptLat = report.Latitude
keepSleeping = False
End Sub
Do While keepSleeping
Wscript.Sleep(20)
Loop
Set ts = fs.CreateTextFile(f, True)
ts.WriteLine rptLat & "," & rptLong
ts.Close
Set fs = Nothing
Set latlongfactory = Nothing
set report = Nothing
當通過VBA運行,它不會創建文本文件了,我不完全確定爲什麼。我試圖在腳本的末尾添加一個Msgbox來查看代碼是否正在運行。 Msgbox確實出現了。
我在使用VBA的訪問執行該生產線是:
Shell "Wscript """ & CurrentProject.Path & "\gpscoordinates.vbs""", 1
它運行VBS文件,但不獲取創建的文本文件,我想不通爲什麼。任何幫助將非常感激!
您使用一個變量稱爲'CurrentDirectory' 。它的價值在哪裏設定? – Bond
由於未初始化的變量「CurrentDirectory」,我懷疑該文件實際*是*創建的,但不在您期望的位置。 –
嗯,我想這是我研究時會發生的事情,但不要徹底閱讀。出於某種原因,我認爲CurrentDirectory是一個可用常量來引用文件的當前位置。這是我告訴自己總是使用Option Explicit的地方......現在我通過創建一個Wscript.Shell來限定它。現在我看到,雙擊該文件時,活動目錄就是文件所在的位置,但是當我從VBA運行時,它是My Documents文件夾(我在那裏找到了該文件)。所以現在我的問題是如何指定VBS文件本身的目錄位置? – user3240517