因此,我经常运行某个报告,然后必须手动输入大约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