Private Sub CommandButton1_Click()
'http://blog.csdn.net/alexbnlee/article/details/6932339
'http://www.51hei.com/bbs/dpj-24491-1.html
ReplaceInfo
End Sub
-------------------------------打开文件直接替换-----------------------------------------------------
Sub ReplaceInfo()
Dim Fn$, MyPath$, MyFile$, NewName$, myText
Fn = Application.GetOpenFilename("選択一つファイル(*.*), *.*", , "選択一つファイル:")
MyPath = Left(Fn, InStrRev(Fn, "\"))
FileInfo = Readbinary(MyPath & "script.sql")
Open "temp" For Append As #2
For i = 2 To UsedRange.Rows.Count
If Cells(i, 3) <> "" Then
OldName = Cells(i, 3)
NewName = Cells(i, 8)
If OldName = NewName Then
If InStr(NewName, "_TB_") > 0 Then
OldIndex = Replace(OldName, "_TB_", "_IX_")
NewIndex = Replace(OldName, "_TB_", "_IX_TB_")
ElseIf InStr(NewName, "_WK_") > 0 Then
OldIndex = Replace(OldName, "_WK_", "_IX_")
NewIndex = Replace(NewName, "_WK_", "_IX_WK_")
End If
TOldInd = "CREATE CLUSTERED COLUMNSTORE INDEX [" & OldIndex & "] ON [dbo].[" & OldName & "] WITH (DROP_EXISTING = OFF) ON [PRIMARY]"
TNewInd = "CREATE CLUSTERED COLUMNSTORE INDEX [" & NewIndex & "] ON [dbo].[" & OldName & "] WITH (DROP_EXISTING = OFF) ON [PRIMARY]"
If InStr(FileInfo, TOldInd) > 0 Then
FileInfo = Replace(FileInfo, TOldInd, TNewInd)
End If
Else
OldIndex = Replace(OldName, "_TB_", "_IX_")
If InStr(NewName, "_TB_") > 0 Then
NewIndex = Replace(NewName, "_TB_", "_IX_TB_")
ElseIf InStr(NewName, "_WK_") > 0 Then
NewIndex = Replace(NewName, "_WK_", "_IX_WK_")
ElseIf InStr(NewName, "00_") > 0 Then
NewIndex = Replace(NewName, "00_", "00_IX_")
End If
If InStr(FileInfo, OldName) > 0 Then
FileInfo = Replace(FileInfo, OldName, NewName)
End If
If InStr(FileInfo, OldIndex) > 0 Then
FileInfo = Replace(FileInfo, OldIndex, NewIndex)
End If
End If
End If
Next
Print #2, FileInfo
Close #2
Name "temp" As "new.sql"
End Sub
Function Readbinary(ByVal FullNames As String) As String
On Error GoTo errh
Dim fNum As Integer, Length1 As Long, w1 As String, Isopen As Boolean
fNum = FreeFile()
Open FullNames For Binary As #fNum
Isopen = True
Length1 = LOF(fNum)
w1 = Space$(Length1)
Seek #fNum, 1
Get #fNum, , w1
Close
Readbinary = w1
errh:
If Isopen Then Close
'MsgBox Err.Description
End Function
-------------------------------------单行循环替换--------------------------------------------------
Sub ReplaceText()
Dim Fn$, MyPath$, MyFile$, NewName$, myText
Fn = Application.GetOpenFilename("選択一つファイル(*.*), *.*", , "選択一つファイル:")
MyPath = Left(Fn, InStrRev(Fn, "\"))
MyFile = Dir(MyPath & "*.sql")
Open MyFile For Input As #1
Open MyFile & "temp" For Append As #2
Do While Not EOF(1)
DoEvents
Line Input #1, myText
For i = 2 To UsedRange.Rows.Count
If Cells(i, 3) = "" Then
Exit Sub
Else
OldName = Cells(i, 3)
NewName = Cells(i, 8)
OldIndex = Replace(OldName, "_TB_", "_IX_")
If InStr(NewName, "_TB_") > 0 Then
NewIndex = Replace(NewName, "_TB_", "_IX_TB_")
ElseIf InStr(NewName, "_WK_") > 0 Then
NewIndex = Replace(NewName, "_WK_", "_IX_WK_")
End If
If InStr(myText, OldName) > 0 Then
myText = Replace(myText, OldName, NewName)
End If
If InStr(myText, OldIndex) > 0 Then
myText = Replace(myText, OldIndex, NewIndex)
End If
End If
Next
Print #2, myText
Loop
Close #2
Close #1
Kill MyFile
Name MyFile & "temp" As MyFile
End Sub
浙公网安备 33010602011771号