Есть ли способ проанализировать текст из IBM Personal Communications в Excel?
Я хотел бы создать сценарий в Excel, чтобы просмотреть мой экран IBM Personal Communications или источник данных (предпочтительно), а затем разбить этот экранный текст на ячейки.
Любые идеи о том, с чего хотя бы начать?
2 ответа
Я бы справился с этим, используя SQL внутри Excel. Этот метод не будет захватывать данные из вашего файла дисплея. Вместо этого он будет использовать ваш второй вариант получения его из базовых таблиц базы данных.
- Создайте файл с информацией о соединении, чтобы получить доступ к базе данных IBM i DB2. На моем ПК вместе с эмулятором были установлены драйверы ODBC и OLE DB, чтобы можно было подключаться к IBM i по протоколам Microsoft.
- В Excel выберите «Данные, соединения». В этом диалоговом окне выберите «Добавить» и выберите файл подключения. Он может попросить вас указать конкретную таблицу для выбора, но вы можете выбрать любую, потому что мы собираемся изменить ее всего за минуту.
- Новое подключение к данным теперь находится в списке в диалоговом окне. Выберите «Свойства», чтобы отредактировать его.
- Замените автоматически сгенерированный SQL на вкладке «Определение» в поле «Текст команды» на SQL, который фактически выбирает данные, относящиеся к вам, из интересующих вас таблиц. Вы можете получить столько фантазии, сколько захотите с этим
SELECT
оператор: соединения, CTE, подзапросы, все, что является правильным форматом DB2 для i SQL. - Закройте эти окна, сохранив изменения. Соединение теперь не зависит от исходного
.odc
источник. - Выберите «Существующие соединения», чтобы выполнить запрос и заставить Excel заполнить таблицу рабочего листа данными. Если у вас есть ошибки SQL, вы получите их в этот момент, когда запрос будет фактически отправлен в IBM i.
- Отредактируйте SQL, пока вы не будете довольны возвращаемыми данными. Вы также можете использовать «Обновить», чтобы повторно запустить его и получить последние данные, когда захотите.
Вы можете использовать макрос VBScript в IBM Personal Communications. Вот пример сценария, который считывает информацию с экрана, а затем отправляет ее в электронную таблицу Excel.
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=Paste to Excel
[PCOMM SCRIPT SOURCE]
Dim wsh
Set wsh=CreateObject("WScript.Shell")
Dim pComm5250
' Set up Variables
Dim ReadThis
Dim strArray
Dim i
'
' Get Presentation Space of current emulator window
autECLSession.SetConnectionByName(ThisSessionName)
Set pComm5250=autECLSession.autECLPS
' Set up a Function for correcting the case of names
Function PCase(strInput)
Dim i, x, strOut, flg
flg = True
For i = 1 To Len(strInput)
x = LCase(Mid(strInput, i, 1))
If Not IsNumeric(x) And (x < "a" Or x > "z") Then
flg = True
ElseIf flg Then
x = UCase(x)
flg = False
End If
strOut = strOut & x
Next
PCase = strOut
End Function
' The first two numbers are the screen location row and column. The third number is how many characters to read.
autECLSession.autECLOIA.WaitForInputReady
ReadThis=pComm5250.GetText(1,2,10)
' Trim any extra blank spaces to the right
ReadThis=RTrim(ReadThis)
' If the variable is numbers, you use this to replace any blank space with a "0".
ReadThis=Replace(ReadThis," ","0")
' If the variable is text you can do this to capitalize each word
ReadThis=PCase(ReadThis)
'Create the excel object
set objExcel = CreateObject("Excel.Application")
'View the Excel program and file, set to false to hide the whole process
objExcel.Visible = True
'Open the excel file
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\ExcelFile.xlsm", , True)
'Set the cell value at row 2 column 3
objExcel.Cells(2,3).Value = (ReadThis)
Set wsh=Nothing
Set pComm5250=Nothing