-1

複数のエクセルファイルからデータを抽出し、グラフをプロットし、最終的に既存のテンプレートを使用してポイントポイントでデータを提示することを自動化できるかどうか疑問に思っています。私はPythonを試しましたが、遠くまで行くことができ、VBの使用を提案した人もいました。私は本当にあなたの助けに感謝します. これが私のデータベースのようです

  1. dir_1/paint_for_yard1/Blue_light_b2.xls dir_1/paint_for_yard1/Red_light_b3.xls dir_1/pat_for_yard8/Green_light_b2.xls という名前の Excel ファイルを含む複数のディレクトリ 各ディレクトリの下に複数のファイルがあり、3 つの列 (pigment-color 、昼の部、夜の部)
  2. 次の形式の Excel ファイルのデータに基づいて更新する必要があるパワーポイント テンプレートがあります。

    ページの本文には、day_run_time が最小の場合の最大 day_run_time と Pigment_color を示す表があります)。そして、同じページに顔料カラー、日中実行時間、夜間実行時間のチャートを作成します。

  3. 各ファイルに対してステップ 2 を実行し、パワーポイントにページを追加します。

私はソフトウェアの専門家ではないので、Python や VB、またはその組み合わせが役立つかどうかはわかりません。任意の提案をいただければ幸いです。

ありがとうアニル

4

2 に答える 2

1

ほとんどすべての「成長した」プログラミング言語でこれが可能です。つまり... C# / VB.NET / Python でこれを解決できます。

PowerPoint テンプレート内の VBA スクリプトを使用すると思います。VBA は Office 専用に作成されており、Excel と通信できます。

于 2013-04-29T15:57:11.433 に答える
0

follow Sub を使用して、Excel ファイルからパワーポイント プレゼンテーションを作成します。

Sub Gera_PPT(PFile As String, EFile As String, Plans As Collection)
'officevb.com
'PFile= PowerPoint Template empty powerPoint with Slide Master to presentation
'EFile = Excel File with Charts and Tables
'Plans = A collection with names of sheets to transpose
Dim rg As Range
'objetos usados para o powerpoint
Dim pptA As Object
Dim ppt As Object
Dim sld As Object

Debug.Print "passei 1"


If Not ValidaCaminho(PFile) Then
    MsgBox "PowerPoint file not found!", vbInformation
    Exit Sub
Else
    Set pptA = CreateObject("PowerPoint.Application")
    pptA.Visible = msoCTrue
    'pptA.WindowState = -1
    Set ppt = pptA.Presentations.Open(PFile)
End If

'objetos usados para o Excel
Dim ExA As Excel.Application
Dim wb As Excel.Workbook
Dim sht As Excel.Worksheet


If Not ValidaCaminho(EFile) Then
    MsgBox "Excel file not found!!", vbInformation
    Exit Sub
Else
    Set ExA = New Excel.Application
    'ExA.Visible = True
    Set wb = Workbooks.Open(EFile, False)
End If

Debug.Print "passei 2"

'For Each sht In wb.Sheets
For i = 1 To Plans.Count

Set sht = wb.Sheets(Plans(i))

    Select Case Left(sht.Name, 1)

    'Debug.Print "passei 3"
    'case is Table
    Case "T"
           Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(2))
           sld.Select
           sld.Shapes.Placeholders(2).Select msoCTrue

           Set rg = sht.Range("B4").CurrentRegion
           rg.Copy
           ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture

    Case "G"
    'Case is 1 Chart

        If sht.ChartObjects.Count = 1 Then

              Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(2))
              sld.Select
              sld.Shapes.Placeholders(2).Select msoCTrue

              sht.ChartObjects(1).Copy

              ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture

'              sld.Shapes.Placeholders.Item(1).TextFrame.TextRange.Text = sht.[A2]
        Else
        'Case is >1 Chart
              Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(4))
              sld.Select

              sht.Activate

              sld.Shapes.Placeholders(1).TextFrame.TextRange.Text = sht.Range("A2").Value

              sld.Shapes.Placeholders(2).Select msoCTrue
              sht.ChartObjects(1).Copy
              ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture

              sld.Shapes.Placeholders(3).Select msoCTrue
              sht.ChartObjects(2).Copy
              ppt.Windows(1).View.PasteSpecial ppPasteMetafilePicture

        End If

    End Select

Next i

'Insert LastSlide
Set sld = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts(5))

wb.Close False
ExA.Quit

Strfile = Split(apoio.[PPTFile], "\")

ppt.SaveAs YourFilePath & "\" & Split(Strfile(UBound(Strfile)), ".")(0) & "-" & Format(Date, "ddmmyyyy")

pptA.Quit

MsgBox "Presentation created!", vbInformation

End Sub
于 2013-04-29T16:25:02.620 に答える