Найти тему
Некто

Решение 1. Вывод данных из DBF файла в XLS. VBScript. Приложение EXCEL. Создание графика.

Если на Вашем компьютере установлен Office, то можно с помощью выполнения скрипта создать график в EXCEL. Сначала данные из dbf файла переносятся в EXCEL, а потом на их величинах строится график. Данные и график выводятся в окно для просмотра.

Предоставляю файл ExclGr1.vbs

'*******************************************************************

' Имя: ExclGr1.vbs

' Язык: VBScript

' Описание: Создание графика в EXCEL из данных DBF файла

'*******************************************************************

Option Explicit

' Объявляем переменные

Dim WshShell

Dim loExcel

Dim SDefaultDir

Dim objExcelSheet

Dim objChart

'Создаем объект--приложение Microsoft EXCEL

Set WshShell=WScript.CreateObject("WScript.Shell")

Set loExcel=WScript.CreateObject("EXCEL.Application")

SDefaultDir=WshShell.CurrentDirectory

loExcel.Workbooks.Open(SDefaultDir & "\reestr.dbf")

'+++++++++++++++++ Заголовки полей ++++++++++++++++

' ----------- номер --------

loExcel.cells(1,1).ColumnWidth=6

loExcel.cells(1,1).Value="Номер"

loExcel.cells(1,1).BorderAround(1)

loExcel.cells(1,1).Font.Bold=True

'WITH loExcel

' WITH .Range("A1")

' .ColumnWidth=6

' .Value="Номер"

' .BorderAround(1)

' WITH .Font

' .Bold=True

' END WITH

' END WITH

'END WITH

'----------- месяц ----------

WITH loExcel

WITH .Range("B1")

.ColumnWidth=8

.Value="Месяц"

.BorderAround(1)

WITH .Font

.Bold=True

END WITH

END WITH

END WITH

'---------- Сумма -----------

WITH loExcel

WITH .Range("C1")

.ColumnWidth=8

.Value="Сумма"

.BorderAround(1)

WITH .Font

.Bold=True

END WITH

END WITH

END WITH

'---------- Количество -----------

WITH loExcel

WITH .Range("D1")

.ColumnWidth=11

.Value="Количество"

.BorderAround(1)

WITH .Font

.Bold=True

END WITH

END WITH

END WITH

loExcel.cells(1,1).select

loExcel.Visible=true ' Делаем EXCEL видимым

'objExcelSheet=loExcel.Sheets(1).Range("B2:C13")

'objExcelSheet=loExcel.Sheets("reestr").Range("B2:C13")

'objExcelSheet=loExcel.Sheets("reestr").Range("B1:C1000")

'objExcelSheet=loExcel.Sheets("reestr").Select

SET objExcelSheet=loExcel.Sheets(1)

SET objChart=objExcelSheet.ChartObjects.Add(100,100,500,250)

objExcelSheet.ChartObjects(1).Top=10

objExcelSheet.ChartObjects(1).Left=200

'============================ Правильно 1 вариант ========================

objExcelSheet.ChartObjects(1).Chart.chartwizard _

objExcelSheet.Range("B2:C13"),3,2,2,1,0,1,"Сумма по месяцам","Месяцы","Сумма",""

'================================================================

'======================== Правильно 2 вариант ====================

' objExcelSheet.ChartObjects(1).Chart.chartwizard _

' objExcelSheet.Range(objExcelSheet.Cells(2,2),objExcelSheet.Cells(13,3)) _

' ,3,2,2,1,0,1,"Сумма по месяцам","Месяцы","Сумма",""

'===========================================================

WITH objExcelSheet.ChartObjects(1).Chart

.ChartTitle.Font.Size=12

.Haslegend =False ' --- отключаем легенду

' .Legend.Font.Size = 6

.PlotBy=2

END WITH

WITH objExcelSheet.ChartObjects(1).Chart.Axes(1) ' --- Ось X работает

' .CategoryType = -4105

' .TickLabels.AutoScaleFont = False

' .TickLabels.Font.Size=6

' .TickLabels.Font.Size=1

' .TickLabels.Font.ColorIndex = 2

' .TickLabels.Font.Background = 2

' .TickLabels.Orientation=90 'Вертикальный вид данных шкалы X

END WITH

' WITH objExcelSheet.ChartObjects(1).Chart.Axes(2) ' --- Ось Y работает

' .TickLabels.AutoScaleFont = False

' .TickLabels.Font.Size=6

' END WITH

WITH objExcelSheet.ChartObjects(1).Chart.PlotArea

.Interior.ColorIndex = -4142

END WITH

WITH objExcelSheet.ChartObjects(1).Chart.ChartGroups(1)

.GapWidth = 80

.VaryByCategories=True

END WITH

WITH objExcelSheet.ChartObjects(1).Chart.SeriesCollection(1)

.ApplyDataLabels

.DataLabels.HorizontalAlignment = 1

.DataLabels.VerticalAlignment =1

' .DataLabels.Orientation=90 'Вертикальный вид данных величин

WITH .DataLabels.Font

.Size = 8

.ColorIndex = 1

END WITH

END WITH

objExcelSheet.ChartObjects(1).Activate

objExcelSheet.ChartObjects(1).Select

'Показываем в окне

IF WshShell.AppActivate(loExcel.Caption) = True then

WshShell.SendKeys("% ~")

END IF

Set WshShell = Nothing

Set loExcel = Nothing

WScript.Quit

'************* Конец *********************************************

Для примера дается файл reestr.dbf

Перенос данных из файлов dbf в EXCEL требует времени и зависит от объема файлов и мощности компьютера.

Файлы сохранил в архив Решение1.rar

Пробуйте. Получится вот такая таблица и график. Можете создать собственный перенос.

Ссылка на файл https://yadi.sk/d/JS8Br49j6wMgBQ

Подписывайтесь на мой канал и ставьте лайки.