2016-05-04 20 views
0

私はvbsに私のExcel vbコードをコピーしましたが、意味/論理の違いがあることを知っています。上記のエラー "Next i"(44行目)があります。これは本質的に整数です。800A0401 vbsエラー

Set xlBook = GetObject("C:\Users\midi\Desktop\IT\E\PRF.xlsm") 
    For each wsheet in xlbook.worksheets 
    msgbox wsheet.name 

next 

Sub RefreshConns() 
    ' Refreshes the connections according to the specified cells 

With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
End With 
Sheets("Run Macro").Activate 
Dim connName 
Dim connStr 
Dim sqltext ' SQL text 

Dim TempconnName 
Dim TempconnStr 
Dim Tempsqltext ' temporary SQL text 
Dim i 
Dim SiteName 

SiteName = ActiveSheet.Cells(1, 2) 
'MsgBox (SiteName) 
For i = 5 To 11 
connName = ActiveSheet.Cells(i, 1).Value 
connStr = ActiveSheet.Cells(i, 2).Value 
sqltext = ActiveSheet.Cells(i, 4).Value 
'MsgBox (connName) 

TempconnStr = Replace(connStr, "SiteNameVBA", SiteName) 
'Debug.Print (ActiveWorkbook.Connections(connName).ODBCConnection.Connection) 
'MsgBox (TempconnStr) 
'Tempsqltext = Replace(sqltext, "SiteNameVBA", SiteName) 

'On Error Resume Next 
ActiveWorkbook.Connections(connName).ODBCConnection.CommandText = sqltext 
ActiveWorkbook.Connections(connName).ODBCConnection.Connection = "ODBC;" & TempconnStr 
ActiveWorkbook.Connections(connName).Refresh 

Next i 

With Application 
    .EnableEvents = True 
    .ScreenUpdating = True 
End With 

End Sub 

Public Function ZeroToBlank(x String) String 
If x = "0" Then 
    ZeroToBlank = "" 
Else 
    ZeroToBlank = x 
End If 
End Function 
+1

VBScriptでは、「次へ」を使用してください。「次へ」は使用しないでください。 –

+1

VBScriptでは、 'Next i'やそれに類するものではなく、常に' Next'を使用します。また、VBScriptではExcelアプリケーションオブジェクトを作成する場合にのみExcelを制御できます。また、VBScriptの宣言では、すべてが変種なので、決してtypenameを与えません。実際には、Excelと対話するVBScriptプログラムの良い例をいくつか見つけて、VBScriptプログラムとして実行するVBAマクロを変更する前にそのコードを理解しておく必要があります。 –

+0

@JohnColemanありがとうございました!私はあなたの推薦を取って​​、いくつかの素晴らしい出発点を見つけました。とても有難い。 – midiman

答えて

0

Nextがループを閉じる。forループ。しかし、あなたはforループを持っていません。両方の行をnextで削除してください。

EG前と同じように、as typeを省略してバリアントとして宣言することはできません。あなたはタイプについて考えないだけです。

Public Function ZeroToBlank(x) 
    If x = "0" Then 
     ZeroToBlank = "" 
    Else 
     ZeroToBlank = x 
    End If 
End Function