strSQL = txtLine改為strSQL = Replace(txtLine, """ & sy1 & """, """ & sy1 & """)strSQL = Replace(strSQL, """ & ssy1 & """, """ & ssy1 & """)你想明白是什麼錯誤了麼?你把sy1和ssy1放入文字檔案中,再讀出來的時候,它們就成為文字的一部分了,VB怎麼會知道它們是變數呢?我知道你的目的是把SQL字串放入文字檔案中方便呼叫,而且可以隨意修改,但這隻適用於固定的SQL字串,對於含變數的是不適用的,VB(包括VBA)沒有宏的功能,但VBScript則有。我的方法是把字串中的變數重新替換為程式中變數值,但這顯然不是你最初想實現的目的。變通的方法是用一些約定的符號來替換變數,使用的時候再替換回來,比如select top 10 * from t_rm_daysum where oper_date between "$1" and "$2"這是用$1和$2分別表示要動態變換的兩處地方,然後使用的時候可以這樣:strSQL = Replace(txtLine, "$1", sy1)strSQL = Replace(strSQL, "$2", ssy1)這樣就簡單明朗多了。
strSQL = txtLine改為strSQL = Replace(txtLine, """ & sy1 & """, """ & sy1 & """)strSQL = Replace(strSQL, """ & ssy1 & """, """ & ssy1 & """)你想明白是什麼錯誤了麼?你把sy1和ssy1放入文字檔案中,再讀出來的時候,它們就成為文字的一部分了,VB怎麼會知道它們是變數呢?我知道你的目的是把SQL字串放入文字檔案中方便呼叫,而且可以隨意修改,但這隻適用於固定的SQL字串,對於含變數的是不適用的,VB(包括VBA)沒有宏的功能,但VBScript則有。我的方法是把字串中的變數重新替換為程式中變數值,但這顯然不是你最初想實現的目的。變通的方法是用一些約定的符號來替換變數,使用的時候再替換回來,比如select top 10 * from t_rm_daysum where oper_date between "$1" and "$2"這是用$1和$2分別表示要動態變換的兩處地方,然後使用的時候可以這樣:strSQL = Replace(txtLine, "$1", sy1)strSQL = Replace(strSQL, "$2", ssy1)這樣就簡單明朗多了。