2013-08-07 77 views
0

我试着去一个文本文件的内容加载到一个变量,但我得到的名义错误,搜索VBA知识库使我相信的是Gah !!错误424运行时错误:对象所需的Word的Visual Basic

Set mySQL = My.Computer.FileSystem.ReadAllText("C:\sql_query_temp.res") 

会解决它但是当我运行时只会产生'Error:Object Required'。这是我的代码,我错过了什么?

'Requires Microsoft ActiveX Data Objects x.x library in references 
Public Sub ConnectToOdbc() 

    Dim myconn As New ADODB.Connection 
    Dim myrs As New Recordset 
    Dim mySQL As String 
    Dim myrows As Long 

    'Open file containing SQL query 
    mySQL = My.Computer.FileSystem.ReadAllText("C:\sql_query_temp.res") <----- bad! 

    'Open Connection 
    myconn.Open "DSN=database" 

    'Do Query 
    myrs.Source = mySQL 
    Set myrs.ActiveConnection = myconn 
    myrs.CursorLocation = adUseClient 
    myrs.Open 

    'Count Rows 
     myrows = myrs.RecordCount 

     'Add text to word document! 
     Selection.TypeText (myrows) 

     'Close Connection 
     myrs.Close 
     myconn.Close 
End Sub 
+1

'My.Computer'是VB.NET,完全不同于'VBA' –

+0

谢谢,我对任何形式的VB都没有任何经验,它会花费我很长时间才能找到答案。我将来会更加小心。 – Funk247

+0

WTH,微软?这个确切的方法(My ... ReadAllText)上周为我工作,现在它不。 –

回答

2

My.Computer是VB.NET这从代替VBA可以完全不同;

Function readFile(path As String) As String 
    Dim hF As Integer 
    hF = FreeFile() 
    Open path For Input As #hF 
     readFile = Input$(LOF(hF), #hF) 
    Close #hF 
End Function 

... 

mySQL = readFile("C:\sql_query_temp.res") 
+0

非常感谢,第一次工作,并且简洁明了,我认为'#'有点像指针? – Funk247

+1

当一个#在变量的前面时,它表示该变量是一个文件句柄(来自FreeFile)iirc,只有你看到#varname时。 (varname#不同并且表示varname是Double类型的) –

0

我想,这可能会奏效。

它可以让你搜索任何给定的目录,而不是只注意一个目录。那么这个目录放置在变量“inFileName”

inFileName = Application.GetOpenFilename("Text & r01 Files(*.*),*.*", , "Open Neutral File", "OPEN)

希望这有助于。