Есть ли способ проанализировать текст из IBM Personal Communications в Excel?

Я хотел бы создать сценарий в Excel, чтобы просмотреть мой экран IBM Personal Communications или источник данных (предпочтительно), а затем разбить этот экранный текст на ячейки.

Любые идеи о том, с чего хотя бы начать?

Пример экрана

2 ответа

Я бы справился с этим, используя SQL внутри Excel. Этот метод не будет захватывать данные из вашего файла дисплея. Вместо этого он будет использовать ваш второй вариант получения его из базовых таблиц базы данных.

  1. Создайте файл с информацией о соединении, чтобы получить доступ к базе данных IBM i DB2. На моем ПК вместе с эмулятором были установлены драйверы ODBC и OLE DB, чтобы можно было подключаться к IBM i по протоколам Microsoft.
  2. В Excel выберите «Данные, соединения». В этом диалоговом окне выберите «Добавить» и выберите файл подключения. Он может попросить вас указать конкретную таблицу для выбора, но вы можете выбрать любую, потому что мы собираемся изменить ее всего за минуту.
  3. Новое подключение к данным теперь находится в списке в диалоговом окне. Выберите «Свойства», чтобы отредактировать его.
  4. Замените автоматически сгенерированный SQL на вкладке «Определение» в поле «Текст команды» на SQL, который фактически выбирает данные, относящиеся к вам, из интересующих вас таблиц. Вы можете получить столько фантазии, сколько захотите с этим SELECTоператор: соединения, CTE, подзапросы, все, что является правильным форматом DB2 для i SQL.
  5. Закройте эти окна, сохранив изменения. Соединение теперь не зависит от исходного .odcисточник.
  6. Выберите «Существующие соединения», чтобы выполнить запрос и заставить Excel заполнить таблицу рабочего листа данными. Если у вас есть ошибки SQL, вы получите их в этот момент, когда запрос будет фактически отправлен в IBM i.
  7. Отредактируйте 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
Другие вопросы по тегам