因此,我經常運行某個報告,然後必須手動輸入大約30個字段,然後將其輸入到執行一些計算的VBA用戶窗體中。他們最近更新了我得到這份報告的網站,所以他們現在在一個excel文件中提供這個特定的報告。從外部Excel文件讀取數據
我想要做的是添加一個瀏覽按鈕到我的用戶表單,我可以搜索文件,然後它會自動填充數據字段。我非常喜歡VBA(或者至少曾經是這樣),但我對這裏的特定問題了解不多。希望有人能夠伸出援助之手!
感謝
因此,我經常運行某個報告,然後必須手動輸入大約30個字段,然後將其輸入到執行一些計算的VBA用戶窗體中。他們最近更新了我得到這份報告的網站,所以他們現在在一個excel文件中提供這個特定的報告。從外部Excel文件讀取數據
我想要做的是添加一個瀏覽按鈕到我的用戶表單,我可以搜索文件,然後它會自動填充數據字段。我非常喜歡VBA(或者至少曾經是這樣),但我對這裏的特定問題了解不多。希望有人能夠伸出援助之手!
感謝
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source='C:\Path\To\Workbook.xlsm';" _
& "Extended Properties=""Excel 8.0;HDR=YES;"";"
strSQL = "SELECT * FROM [Sheet1$]"
您可以針對Excel文件直接查詢。我會補充說,該文件可能需要「乾淨/整潔」,才能完美運行。無論哪種方式這應該有所幫助。
編輯這是假設你首先下載它。我將不得不四處自動從網站獲取文件,然後查詢它。
我必須與其他工作簿頻繁工作,我做到以下幾點:
Dim reportBookPath As String
Dim reportwb As Workbook
reportBookPath = "C:\Users\......\filename.xlsx"
Set reportwb = Workbooks.Open(Filename:=reportBookPath)
reportwb.Application.Visible = False
然後,當我想在工作簿訪問任何東西,它只是做的事:
valueDesired = reportwb.Worksheets("Desired Sheet").Cells(row,column).Value
要使用此功能打開帶有動態文件名的工作簿,您需要爲工作簿名稱設置某種已建立的模式。如果有,可以使用正則表達式來打開相應的工作簿。要做到這一點,你會:
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim shiftRegExp As RegExp
Dim strPattern As String
Dim pathToFile As String
以下行:
strPattern = "[S|s]hift(?)1(?)\.xlsx$"
在所有這些代碼的真正強大的部分。對於任何以下列任何結尾的文件名,此特定正則表達式均爲真:
shift1.xlsx;移位1.xlsx; SHIFT1。 xlsx;移位1.xlsx; Shift1.xlsx; Shift 1.xlsx; Shift1 .xlsx; Shift 1.xlsx
您可以使用this link來測試您自己的正則表達式。
Set shiftRegExp = CreateObject("vbscript.regexp")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\....\workbook directory")
With shiftRegExp
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
,您可以通過所有文件的迭代在你選擇的目錄中,直到你發現你的正則表達式匹配的文件使用正則表達式。顯然,如果你有多個文件與你的正則表達式匹配,你將會遇到問題。
For Each objFile In objFolder.Files
If shiftRegExp.test(objFile.Path) Then
pathToFile = objFile.Path
Exit For
End If
Next objFile
需要在這裏稍作澄清 - 你知道文件與數據字段的位置嗎?如果是這樣,讓你的按鈕執行一個'Workbooks.Open',然後檢索你需要的任何東西,關閉它,做你的calcs等等?如果你想要用戶指定文件,看看'Application.FileDialog(msoFileDialogFilePicker)'命令讓他們選擇有問題的文件?一般來說,如果您發佈自己的努力並表明您已經嘗試先自己解決問題,那麼您在這裏可能會更有幫助。 – Dave
你實際上沒有在這裏提到「具體問題」。 –
對不起,我實際上並沒有找人爲我做這個!只是想要朝正確的方向推進。我會看看FileDialog命令,這看起來像我在找什麼。謝謝 – ct4242