153 lines
4.7 KiB
QBasic
153 lines
4.7 KiB
QBasic
![]() |
Attribute VB_Name = "Main"
|
|||
|
Option Explicit
|
|||
|
|
|||
|
Public Sub RunImportCSV()
|
|||
|
Dim sFile$: sFile = UserInteraction.PromptFileFilter(ThisWorkbook.Path, _
|
|||
|
sDescription:="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CSV", _
|
|||
|
sFilter:="*.csv")
|
|||
|
If sFile = vbNullString Then _
|
|||
|
Exit Sub
|
|||
|
If Not ProcessCSV(sFile) Then _
|
|||
|
Exit Sub
|
|||
|
Call UserInteraction.ShowMessage(IM_IMPORT_SUCCESS)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunImportDB()
|
|||
|
Dim sFile$: sFile = UserInteraction.PromptFileFilter(ThisWorkbook.Path, _
|
|||
|
sDescription:="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Excel", _
|
|||
|
sFilter:="*.xlsx;*.xls;*.xlsm")
|
|||
|
If sFile = vbNullString Then _
|
|||
|
Exit Sub
|
|||
|
|
|||
|
Dim xlInput As New API_XLWrapper: Call xlInput.SetApplication(ThisWorkbook.Application)
|
|||
|
If xlInput.OpenDocument(sFile, bReadOnly:=True) Is Nothing Then
|
|||
|
Call UserInteraction.ShowMessage(EM_FILE_CANNOT_OPEN, sFile)
|
|||
|
Exit Sub
|
|||
|
End If
|
|||
|
|
|||
|
Call xlInput.PauseUI
|
|||
|
|
|||
|
Dim iInput As New DB_Content: Call iInput.Init(xlInput.Document.Sheets(SHEET_CONTENT), xlInput.Document.Worksheets(SHEET_ATTRIBUTES))
|
|||
|
Call ImportDataFromDB(iInput, AccessContent)
|
|||
|
|
|||
|
Call xlInput.ResumeUI
|
|||
|
Call xlInput.ReleaseDocument
|
|||
|
Call UserInteraction.ShowMessage(IM_IMPORT_SUCCESS)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunEditConfig()
|
|||
|
Call ThisWorkbook.Worksheets(SHEET_CONFIG).Activate
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunUpdateTasks()
|
|||
|
Dim iConfig As InfoConfig: Set iConfig = AccessConfig
|
|||
|
Call iConfig.SetScanTasks(True)
|
|||
|
Call iConfig.SetScanContent(False)
|
|||
|
Call ExecuteUpdateRequest(iConfig)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunUpdateContent()
|
|||
|
Dim iConfig As InfoConfig: Set iConfig = AccessConfig
|
|||
|
Call iConfig.SetScanTasks(False)
|
|||
|
Call iConfig.SetScanContent(True)
|
|||
|
Call ExecuteUpdateRequest(iConfig)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunUpdatePortal()
|
|||
|
Dim iConfig As InfoConfig: Set iConfig = AccessConfig
|
|||
|
Call iConfig.SetScanTasks(True)
|
|||
|
Call iConfig.SetScanContent(True)
|
|||
|
Call ExecuteUpdateRequest(iConfig)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunClearData()
|
|||
|
Call ClearData
|
|||
|
Call UserInteraction.ShowMessage(IM_DATA_DELETED)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunUnstuck()
|
|||
|
Dim uiWrap As New API_XLWrapper: Call uiWrap.SetDocument(ThisWorkbook)
|
|||
|
Call uiWrap.ResumeUI
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunInputMarks()
|
|||
|
Dim iTarget As Excel.Range: Set iTarget = Excel.Selection.Cells(1, 1)
|
|||
|
Call CSE_ListSelector.Init(ThisWorkbook.Worksheets(SHEET_OPTIONS).ListObjects(TABLE_MARKERS))
|
|||
|
Call CSE_ListSelector.Show
|
|||
|
If CSE_ListSelector.isCanceled_ Then _
|
|||
|
Exit Sub
|
|||
|
|
|||
|
iTarget = CSE_ListSelector.GetSelectedStr
|
|||
|
Call Unload(CSE_ListSelector)
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub RunInputTags()
|
|||
|
Dim iTarget As Excel.Range: Set iTarget = Excel.Selection.Cells(1, 1)
|
|||
|
Call CSE_ListSelector.Init(ThisWorkbook.Worksheets(SHEET_OPTIONS).ListObjects(TABLE_TAGS))
|
|||
|
Call CSE_ListSelector.Show
|
|||
|
If CSE_ListSelector.isCanceled_ Then _
|
|||
|
Exit Sub
|
|||
|
|
|||
|
iTarget = CSE_ListSelector.GetSelectedStr
|
|||
|
Call Unload(CSE_ListSelector)
|
|||
|
End Sub
|
|||
|
|
|||
|
' =======
|
|||
|
Private Function ProcessCSV(sFile$) As Boolean
|
|||
|
ProcessCSV = False
|
|||
|
|
|||
|
Dim dataIn As Excel.Worksheet: Set dataIn = ThisWorkbook.Worksheets.Add
|
|||
|
With dataIn.QueryTables.Add(Connection:="TEXT;" & sFile, Destination:=dataIn.Cells(1, 1))
|
|||
|
.TextFileParseType = xlDelimited
|
|||
|
.TextFileCommaDelimiter = True
|
|||
|
.TextFilePlatform = 65001 ' UTF-8
|
|||
|
.Refresh
|
|||
|
End With
|
|||
|
|
|||
|
Dim sID$: sID = dataIn.Cells(1, 1)
|
|||
|
If sID <> "" Then
|
|||
|
If VBA.Left(sID, 1) Like "[0-9a-f]" Then
|
|||
|
Dim iContent As New IteratorCSVContent: Call iContent.Init(dataIn)
|
|||
|
Call ImportContentFromCSV(iContent, AccessContent)
|
|||
|
Else
|
|||
|
Dim iTasks As New IteratorCSVTasks: Call iTasks.Init(dataIn, AccessWorkers)
|
|||
|
Call ImportTasksFromCSV(iTasks, AccessContent)
|
|||
|
End If
|
|||
|
End If
|
|||
|
|
|||
|
|
|||
|
Dim bAlerts As Boolean: bAlerts = Excel.Application.DisplayAlerts
|
|||
|
Excel.Application.DisplayAlerts = False
|
|||
|
Call dataIn.QueryTables(1).Delete
|
|||
|
Call dataIn.Delete
|
|||
|
Excel.Application.DisplayAlerts = bAlerts
|
|||
|
|
|||
|
ProcessCSV = True
|
|||
|
End Function
|
|||
|
|
|||
|
Private Function ExecuteUpdateRequest(iConfig As InfoConfig)
|
|||
|
Call iConfig.CreateConfigFile
|
|||
|
|
|||
|
Dim bScanPortal As Boolean: bScanPortal = PortalUpdate(iConfig)
|
|||
|
' Call iConfig.DeleteConfigFile
|
|||
|
If Not bScanPortal Then _
|
|||
|
Exit Function
|
|||
|
|
|||
|
Dim bProcessTasks As Boolean: bProcessTasks = True
|
|||
|
If iConfig.ScanTasks Then
|
|||
|
Dim sFile$: sFile = iConfig.OutputFileTasks
|
|||
|
bProcessTasks = ProcessCSV(sFile)
|
|||
|
' Call Kill(sFile)
|
|||
|
End If
|
|||
|
|
|||
|
Dim bProcessContent As Boolean: bProcessContent = True
|
|||
|
If iConfig.ScanContent Then
|
|||
|
sFile = iConfig.OutputFileContent
|
|||
|
bProcessContent = ProcessCSV(sFile)
|
|||
|
' Call Kill(sFile)
|
|||
|
End If
|
|||
|
|
|||
|
If bProcessTasks And bProcessContent Then _
|
|||
|
Call UserInteraction.ShowMessage(IM_IMPORT_SUCCESS)
|
|||
|
End Function
|