2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
अस्य VBA मैक्रो इत्यस्य सोपानानि निम्नलिखितरूपेण सन्ति ।
युक्तिः : यतः SQL पाठस्य प्रकरणम् इत्यादयः विषयाः वस्तुतः अधिकं जटिलाः सन्ति, अतः एतत् उदाहरणं सावधानीपूर्वकं उपयुज्यताम् ।
केचन अप्रत्याशितपरिस्थितयः, यथा केचन युक्ताः क्षेत्राणि) values
इत्यादि मुख्यतया स्थितिप्रकरणात्, ततः मूल्यस्य दीर्घतायाः कारणात्, मूल्ये किमपि अपि अस्ति चेत्,
अल्पविरामाः, ततः रिक्तस्थानादयः मुद्देः;
python इत्यस्य उपयोगः सुकरः भवेत्;
निम्नलिखितम्VBA
स्क्रिप्ट् सन्दर्भार्थं प्रदत्ता अस्ति;
अस्याः शैल्याः कृते : १.
insert into aaa (aa,bb,cc) values ('2','','3aa');
insert into aaa (aa,bb,cc) values ('1',null,'');
' +++++++++++++++++++++++++++++++++++++++++++++++++++
' author Mr.qyb_y
' Version 1.0.0
' Date 2024-07-09 21:10
' +++++++++++++++++++++++++++++++++++++++++++++++++++
Sub ImportSQLToExcel()
Dim fd As FileDialog
Dim filePath As String
Dim fileContent As String
Dim lines As Variant
Dim line As Variant
Dim sht As Worksheet
Dim currentSheetIndex As Integer
' 创建文件对话框以选择SQL文件
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "Select SQL File"
fd.Filters.Add "SQL Files", "*.sql", 1
If fd.Show = -1 Then
filePath = fd.SelectedItems(1)
Else
MsgBox "No file selected.", vbExclamation
Exit Sub
End If
' 读取文件内容
fileContent = ReadFileContent(filePath)
lines = Split(fileContent, vbCrLf)
currentSheetIndex = Sheets.Count
' 解析文件内容并插入到Excel中
For Each line In lines
If InStr(line, "insert into") > 0 Then
Dim tableName As String
Dim columnNames As String
tableName = ExtractTableName(CStr(line)) ' 强制转换为字符串类型
columnNames = ExtractColumnNames(CStr(line)) ' 提取列名
' 检查工作表是否已经存在
On Error Resume Next
Set sht = Sheets(tableName)
On Error GoTo 0
' 如果工作表不存在,则创建新的工作表,并插入列名
If sht Is Nothing Then
Set sht = Sheets.Add(After:=Sheets(currentSheetIndex))
sht.Name = tableName
currentSheetIndex = currentSheetIndex + 1
' 插入列名
InsertColumnNames sht, columnNames
End If
' 插入数据
InsertDataIntoSheet sht, CStr(line) ' 强制转换为字符串类型
End If
Next line
MsgBox "Data imported successfully!", vbInformation
End Sub
Function ReadFileContent(filePath As String) As String
Dim fileNumber As Integer
Dim content As String
fileNumber = FreeFile
Open filePath For Input As fileNumber
content = Input(LOF(fileNumber), fileNumber)
Close fileNumber
ReadFileContent = content
End Function
Function ExtractTableName(ByVal sqlLine As String) As String ' 明确指定参数类型
Dim startPos As Integer
Dim endPos As Integer
startPos = InStr(sqlLine, "insert into") + Len("insert into ")
endPos = InStr(startPos, sqlLine, " (")
ExtractTableName = Trim(Mid(sqlLine, startPos, endPos - startPos))
End Function
Function ExtractColumnNames(ByVal sqlLine As String) As String
Dim startPos As Integer
Dim endPos As Integer
startPos = InStr(sqlLine, "(") + 1
endPos = InStr(sqlLine, ") values")
ExtractColumnNames = Trim(Mid(sqlLine, startPos, endPos - startPos))
End Function
Sub InsertColumnNames(sht As Worksheet, columnNames As String)
Dim columns As Variant
columns = Split(columnNames, ",")
With sht
Dim i As Integer
For i = LBound(columns) To UBound(columns)
.Cells(1, i + 1).Value = Trim(columns(i))
Next i
End With
End Sub
Sub InsertDataIntoSheet(sht As Worksheet, ByVal sqlLine As String) ' 明确指定参数类型
Dim valuesStartPos As Integer
Dim valuesEndPos As Integer
Dim values As String
Dim data As Variant
valuesStartPos = InStr(sqlLine, "values (") + Len("values (")
valuesEndPos = InStr(valuesStartPos, sqlLine, ");")
values = Mid(sqlLine, valuesStartPos, valuesEndPos - valuesStartPos)
data = Split(values, ",")
' 去掉单引号并插入数据到工作表中
With sht
Dim nextRow As Long
nextRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Dim i As Integer
For i = LBound(data) To UBound(data)
.Cells(nextRow, i + 1).Value = Replace(Trim(data(i)), "'", "")
Next i
End With
End Sub
🍀
शुभरात्रि
शान्तिः
सम्- विश्