Utwórz punkt mocy za pomocą programu Excel Makro


Mam ciekawy problem, w którym nie jestem pewien. Nie pracowałem z mocą i mam trochę doświadczenia z makr Excel. Znalazłem wiele podobnych problemów, ale żaden z nich nie zbliżał się do tego. Pomogę mojej lokalnej organizacji charytatywnej z kolekcją funduszy i potrzebuję sposobu na tworzenie gry typu Trive. Gra zostanie wyświetlona z programem PowerPoint i wszystkie pytania, opcje, opcje i odpowiedzi - na arkuszu Excel. Sposób, w jaki się położone jest jedno pytanie w ciągu, a kolumny są następujące: pytanie, opcje, odpowiedzi i kategoria.
Dość łatwo zabrałem się za sortowanie kategorii, ale teraz muszę jakoś popracować nad utworzeniem slajdów PowerPointa, tak aby pytanie było tytułem, a opcje były treścią, a następny slajd jest odpowiedzią na to pytanie. Dlatego każde pytanie tworzy dwa slajdy, slajd z pytaniem i odpowiedzią.
Przykładowy ciąg (/ wyznaczał kolumnę):

Który z nich był włoskim rzeźbiarzem?/Michelangelo, Tintoretto, da Vinci, Galileo/Michelangelo/art

Rezultatem byłaby strona nazwana „Który z nich był włoskim rzeźbiarzem?” i treść a) Michelangelo, b) Tintoretto, c) da Vinci, d) Galileo
następny slajd to po prostu „Michelangelo”
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Udało mi się to rozgryźć, kodując go w programie Excel Makro. To nie jest najlepsze rozwiązanie, ale łatwo jest śledzić i można je zmienić przez kogoś z tym samym problemem. Do swojej nuty, zadaję to pytanie, ale mój komputer poważnie musi przemyśleć, a nie mogę wejść do przelewu stosu ... O Good. Oto mój kod rozwiązany ten problem. Należy pamiętać, że wszystkie pytania zostały posortowane według kategorii wcześniej, więc po prostu zmieniłem początkowe i końcowe zmienne sterujące cyklu, aby utworzyć nowy PPT po zapisaniu i zamykaniu wcześniej utworzonych. Poniższy kod może zawierać kod zapożyczony z innych problemów przelewowych stosu i naładowania:
Sub CreatePowerPointQuestions() 'Add a reference to the Microsoft PowerPoint Library by:
'1. Go to Tools in the VBA menu
'2. Click on Reference
'3. Scroll down to Microsoft PowerPoint X.0 Object Library, check the box, and press Okay'First we declare the variables we will be using
Dim newPowerPoint As PowerPoint.Application
Dim activeSlide As PowerPoint.Slide
Dim Question As String
Dim Options As String 'comma separated list of options
Dim Choices() As String 'split up options for printing
Dim printOptions As String 'string to print in contents of slide
Dim Answer As String
Dim limit As Integer
'set question amount:
limit = 5
'Look for existing instance
On Error Resume Next
Set newPowerPoint = GetObject(, "PowerPoint.Application")
On Error GoTo 0'Let's create a new PowerPoint
If newPowerPoint Is Nothing Then
Set newPowerPoint = New PowerPoint.Application
End If
'Make a presentation in PowerPoint
If newPowerPoint.Presentations.Count = 0 Then
newPowerPoint.Presentations.Add
End If'Show the PowerPoint
newPowerPoint.Visible = True
'Select worksheet and cells activate
Worksheets("Sheet1").Activate'Loop through each question
For i = 1 To limit 'Add a new slide where we will paste the Question and Options:
newPowerPoint.ActivePresentation.Slides.Add newPowerPoint.ActivePresentation.Slides.Count + 1, ppLayoutText
newPowerPoint.ActiveWindow.View.GotoSlide newPowerPoint.ActivePresentation.Slides.Count
Set activeSlide = newPowerPoint.ActivePresentation.Slides(newPowerPoint.ActivePresentation.Slides.Count) 'Set the variables to the cells
Question = ActiveSheet.Cells(i, 1).Value
Options = ActiveSheet.Cells(i, 2).Value
Answer = ActiveSheet.Cells(i, 3).Value 'Split options into choices a,b,c,d based on comma separation
Choices() = Split(Options, ", ")
'Formate printOptions to paste into content
printOptions = "A) " & Choices(0) & vbNewLine & "B) " & Choices(1) & vbNewLine & "C) " & Choices(2) & vbNewLine & "D) " & Choices(3)
activeSlide.Shapes(2).TextFrame.TextRange.Text = printOptions 'Set the title of the slide the same as the question for the options
activeSlide.Shapes(1).TextFrame.TextRange.Text = Question 'Add answer slide and select it
newPowerPoint.ActivePresentation.Slides.Add newPowerPoint.ActivePresentation.Slides.Count + 1, ppLayoutText
newPowerPoint.ActiveWindow.View.GotoSlide newPowerPoint.ActivePresentation.Slides.Count
Set activeSlide = newPowerPoint.ActivePresentation.Slides(newPowerPoint.ActivePresentation.Slides.Count)
'Set title:
activeSlide.Shapes(1).TextFrame.TextRange.Text = "Answer:"
'Set contents to answer:
activeSlide.Shapes(2).TextFrame.TextRange.Text = Answer
'Finished with a row (question)
NextAppActivate ("Microsoft PowerPoint")
Set activeSlide = Nothing
Set newPowerPoint = NothingEnd Sub
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mam komercyjną nadbudowę PPT, która sprawia, że ​​taki
rzeczy, ale niestety nie

całkiem

taki.
Ogólnie rzecz biorąc, chciałbyś zacząć od prezentacji PPT, który ma dwa zjeżdżalnie, z których każdy ma "symbol zastępczy" pól tekstowych ... pola tekstowe z tekstem type @ pytanie @, @ Odpowiedz @ i tak dalej.
Kod będzie wyglądał następująco:
Uzyskaj liczenie liczby linii danych (tj. Liczba niezbędnych parych Slajdów Q & AMP; a)
Zrób kopię pliku źródłowego "Szablon" PPT, a następnie zduplikuj każdą z początkowymi slajdów N razy, gdzie n = liczba wierszy danych w arkuszu kalkulacyjnym.
Przyjdź na struny danych, dla każdej linii, wymień tekst @ na bieżącym slajdzie, wymień parametry na bieżącym slajdzie, zwiększ licznik przesuń, zastąp @ Odpowiedz @ na bieżącej reakcji slajdów z bieżącej linii danych i tak na.
Możesz napisać to w PPT lub Excel; jeśli znasz VBA/Excel, zrobiłbym to tam.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się