Я пытаюсь создать сводную таблицу, а затем сводную диаграмму от ahk для встраивания в электронную почту. Я полный noob, поэтому, пожалуйста, простите мое качество кода. У меня возникли проблемы с настройкой моей сводной таблицы, и я не могу получить диаграмму для моей жизни. Я включил ссылки на какие должности, с которых я работал, а также желаемый конечный результат в нижней части этой публикации.Создание сводной таблицы и диаграммы В Excel COM для Autohotkey
Мои данные состоят из двух столбцов, с (может сделать это без) заголовков времени и предупреждения. Я хочу, чтобы иметь возможность создавать диаграмму, которая показывает количество и тип предупреждения с течением времени, оттуда либо получить ручку на объект и поместить его в электронную почту Outlook, или даже просто скопировать копию для меня. Пожалуйста, сообщите, как это сделать, я думаю, что я так близко.
Редактировать Я обновил код, приведенный ниже, Понял в точку (небрежный я уверен), что график будет создаваться, единственное, что IM отсутствует добавляет «предупреждение» в поле легенды в сводной таблице , и изменение оси (категории) от «времени» до «часов», это будет группировать предупреждения часами вместо индивидуальной отметки времени. если я сделаю это вручную, я, кажется, получаю результат, который хочу. После этого я просто хочу удалить заголовок диаграммы, а затем назначить диаграмму объекту для встраивания или получить его в буфер обмена.
Благодарим за помощь.
f1::Reload
Pause::Pause
f2::ListVars
Pause
!`::
function()
return
function()
{
when:=[]
what:=[]
Nothing:="Nothing to report, have a wonderful day."
TMP:=""
RMRKS:=""
Date1:=""
Date2:=""
EMOUT:=""
EMIN := Clipboard ; Email text var
Loop, Parse, EMIN,`n,`r ; parse email by line
{
tmp := StrSplit(A_LoopField, ";") ; for each line break it into chunks by ";"
rmrks := tmp.6 ; Warn code is in 6th index
If (InStr(rmrks, "Warning")) ; If this is a warning line
{
date1:=StrSplit(tmp.1, "/") ; date/time is in DD/MM/YYYY , split it up by "/"
date2= % date1.2 "/" date1.1 "/" date1.3 ; Rearrange the date into MM/DD/YYYY
EMOUT .= date2 "`t" rmrks "`n" ; Push into VAR "11/24/2016 13:40:45 WARNING MESSAGE"
}
}
EMOUT := StrReplace(EMOUT,"""") ; Replace all of the quotes in the var with Null
Loop, Parse, EMOUT,`n,`r ; Split output by line and then...
{
tmp := StrSplit(A_LoopField, ["`t"]) ; split lines by tab
when.insert(tmp.1) ; insert date/time stamp into "when" array
what.insert(tmp.2) ; insert Warn Code into "what" array
}
if (emout!="") ; If there was stuff to put into array
{
XL := ComObjCreate("Excel.Application") ; create an excel object
wbk := xl.Workbooks.Add ; add a workbook to the object
Xl.Visible := True ; make it visible
XL.Range("A1").Value := "Time" ;Create Time header
XL.Range("A:A").columnwidth := "20"
XL.Range("B:B").columnwidth := "56.86"
XL.Range("B1").Value := "Warning" ; Create Warning Header
for index in when
Xl.Range("A" . index+1).Value := when[index] ;add everything in the "when" array
for index in what
Xl.Range("B" . index+1).Value := what[index] ;add everything in the "what" array
rng := xl.Sheets(1).UsedRange.address
trgt := xl.Sheets(1).range("c1")
pvt := xl.ActiveWorkbook.PivotCaches.Create(xlDatabase:=1, rng, xlPivotTableVersion12:=3).CreatePivotTable(trgt, "PivotTable1", ,xlPivotTableVersion12:=3)
pvt.PivotFields("warning").Orientation := 1
pvt.PivotFields("warning").Position := 1
pvt.PivotFields("time").Orientation := 1
pvt.PivotFields("time").Position := 2
pvt.AddDataField(pvt.PivotFields("Warning"), "Count of Warning", -4112)
Sheet := xl.Sheets(1)
Sheet.Shapes.AddChart.Select
wbk.ShowPivotChartActiveFields := false
xl.ActiveChart.ChartType := 51
xl.ActiveChart.PivotLayout.PivotTable.PivotFields("Warning").Orientation = xlColumnField
xl.ActiveChart.PivotLayout.PivotTable.PivotFields("Warning").Position = 1
return
}
if (emout="")
Msgbox, %Nothing%
Reload
}
сообщений Источник на форуме Я работаю с являются
AutoHotkey точка ком/доска/тема/149544 стол с поворотными-против-таблицы с поворотными-чарт-ком
и
AutoHotkey точка ком/доска/тема/125719-ком-первенствует-поворотный стол
Конечный результат Я ищу встраивать в электронной почте Outlook:
входПример:
http://p.ahkscript.org/?p=a0ceb3b1