Sql 如何将InputBox的结果用于查询目录?
我正在尝试基于access文件在Excel中运行查询。我想通过宏执行此操作的原因是我必须对不同的文件执行此过程的次数。我试图使用Inputbox来识别我想要使用的数据库的名称,但我无法让它工作,因为我经常会遇到关于不匹配的错误。有什么帮助吗??这是我到目前为止所做的Sql 如何将InputBox的结果用于查询目录?,sql,excel,inputbox,vba,Sql,Excel,Inputbox,Vba,我正在尝试基于access文件在Excel中运行查询。我想通过宏执行此操作的原因是我必须对不同的文件执行此过程的次数。我试图使用Inputbox来识别我想要使用的数据库的名称,但我无法让它工作,因为我经常会遇到关于不匹配的错误。有什么帮助吗??这是我到目前为止所做的 Sub Macro1() Dim myValue As Variant Set myValue = Application.InputBox("Please type in the exact name of the s
Sub Macro1()
Dim myValue As Variant
Set myValue = Application.InputBox("Please type in the exact name of the source database")
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=ThisWorkbook.Path & " \ " & myValue.accdb;DefaultDir=ThisWorkbook.Path;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
)), Destination:=Range("$B$3")).QueryTable
.CommandText = Array( _
"TRANSFORM Sum(Daily.RT_RENTAL_COUNT) AS SumOfRT_RENTAL_COUNT" & Chr(13) & "" & Chr(10) & "SELECT Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "FROM Daily" & Chr(13) & "" & Chr(10) & "GROUP BY Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "PIVOT Daily.RT_CKOT_LOC_ID;" & Chr(13) & "" & Chr(10) & "" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_Query_from_MS_Access_Database"
.Refresh BackgroundQuery:=False
End With
End Sub
而不是
Set myValue = Application.InputBox("Please type in the exact name of the source database")
做
InputBox返回一个字符串,而不是一个对象,所以不能将set与字符串一起使用。我最终找到了答案。问题是我试图将inputbox的结果链接到文件目录!这就是它的工作原理。这也可能有助于其他人:
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=" & myValue & "; DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("$B$3")).QueryTable
.CommandText = Array( _
"TRANSFORM Sum(Daily.RT_RENTAL_COUNT) AS SumOfRT_RENTAL_COUNT" & Chr(13) & "" & Chr(10) & "SELECT Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "FROM Daily" & Chr(13) & "" & Chr(10) & "GROUP BY Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "PIVOT Daily.RT_CKOT_LOC_ID;" & Chr(13) & "" & Chr(10) & "" _
)
谢谢你的回复!我试过了,但是我得到了一个不匹配错误'13'
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=" & myValue & "; DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("$B$3")).QueryTable
.CommandText = Array( _
"TRANSFORM Sum(Daily.RT_RENTAL_COUNT) AS SumOfRT_RENTAL_COUNT" & Chr(13) & "" & Chr(10) & "SELECT Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "FROM Daily" & Chr(13) & "" & Chr(10) & "GROUP BY Daily.[Full CN_CR_PARENT_NAME]" & Chr(13) & "" & Chr(10) & "PIVOT Daily.RT_CKOT_LOC_ID;" & Chr(13) & "" & Chr(10) & "" _
)