2016-06-13 8 views
-1

Ich habe Code in zwei erwähnten Anwendungen geschrieben. Dieser Code in Word legt alle emf-Dateien in Wort zusammen mit der angegebenen Überschrift:Wie effektiv Word-und Excel-VBA-Funktionen zu konsolidieren?

Sub LoopEMF() 
Dim sPic As String 
Dim sPath As String 
Dim MyText2 As String 
MyText2 = "Figure X - Effects of indicated compounds on specified assays." 

sPath = ActiveDocument.Path & "\" 
sPic = Dir(sPath & "*.emf") 

Do While sPic <> "" 
    Selection.TypeText (MyText2) 
    Selection.InlineShapes.AddPicture _ 
     FileName:=sPath & sPic, _ 
     LinkToFile:=False, SaveWithDocument:=True 
    Selection.TypeParagraph 
    Selection.TypeParagraph 
    sPic = Dir 
Loop 
End Sub 

Der zweite Satz von Code kopiert eine Gruppe von Zellen in Excel (sie kodieren eine kleine Tabelle, die Werte basierend auf einem Offset-Updates) und Pasten, die Informationen in Word kopiert:

Sub Insert_Table2() 

Dim WdObj As Object, fname As String 
fname = "Tester" 
Set WdObj = CreateObject("Word.Application") 
WdObj.Visible = False 
WdObj.Documents.Add 
For loop_ctr = 1 To 2 
ActiveSheet.Range("I2").Value = loop_ctr 
Range("J1:M5").Select 
Selection.Copy 'Your Copy Range 
WdObj.Selection.PasteSpecial Link:=False, _ 
DataType:=wdPasteText, Placement:= _ 
wdInLine, DisplayAsIcon:=False 
Application.CutCopyMode = False 
Next loop_ctr 
If fname <> "" Then 'make sure fname is not blank 
With WdObj 
.ChangeFileOpenDirectory ActiveWorkbook.Path 'save Dir 
.ActiveDocument.SaveAs Filename:=fname & ".docx" 
End With 
Else: 
MsgBox ("File not saved, naming range was botched, guess again.") 
End If 
With WdObj 
.ActiveDocument.Close 
.Quit 
End With 
Set WdObj = Nothing 

End Sub 

Beide Codes sind auf Schleife und genau das tun, wie sie konzipiert sind. Aber jetzt möchte ich ihre jeweiligen Aktionen in einer einzigen Word-Datei kombinieren - und ich bin wirklich fest (Hilfe?). Ich kann keine Möglichkeit sehen, die beiden Codes ineinander zu integrieren (und nicht einmal sicher, ob es machbar ist). Wenn es möglich ist, den Code zu verschachteln, der großartig wäre - aber ich kann mir nicht vorstellen, wie man die jeweiligen Schleifenfunktionen verschachtelt.

Das sagte, hier ist, was ich gerne tun könnte. Fügen Sie zuerst Code zu der Word-VBA (LoopEMF) hinzu, so dass es Abbildung X um eins mit jeder Schleife (Abbildung 1, Abbildung 2 usw.) erhöht. Damit scheint es möglich zu sein, die Excel-VBA (Insert_Table2) so zu ändern, dass sie das Word-Dokument mit den .emf-Dateien öffnet, nach der Textzeichenfolge sucht und die Tabelle nach einem Wagenrücklauf aus der Textzeichenfolge einfügt. Wenn eine freundliche Seele mir helfen kann, so weit zu kommen, dann scheint es die letzte Aufgabe zu sein, die Ausrichtung und Position der zwei eingefügten Objekte so einzustellen, dass sie sich an gegenüberliegenden Enden der Seite befinden und richtig zueinander positioniert sind.

+0

Nun, die „Bild X“ ist nicht Teil Ihres vorhandenen Code und Es ist unklar, was genau Sie wollen, obwohl es möglich ist, zu raten. Aber es ist eine ganz andere Frage als den Code zu kombinieren. Gemäß den Stack Overflow-Richtlinien für das Stellen von Fragen (siehe [Hilfe]) ist Ihre Frage "zu weit gefasst". Ich rate Ihnen, den Link [Bearbeiten] zu verwenden, um diesen Teil herauszunehmen und ihn in eine zweite Frage mit mehr Details zu stellen. Und bevor Sie das tun, untersuchen Sie die in Word eingebaute "Caption" -Funktion, da dies wahrscheinlich das ist, was Sie wollen. –

+0

Ihre zweite Frage betrifft das Auffinden einer "Textzeichenfolge" - aber Sie sagen nicht genau, was das sein könnte - und das Einfügen von Excel-Inhalt danach. Sie müssen genauer wissen, was Sie hier brauchen, und das sollte wahrscheinlich der Schwerpunkt dieser Frage sein. –

+0

Ihre dritte Frage gehört dann zu einer anderen Frage und sollte wahrscheinlich gestellt werden, nachdem Sie alles andere sortiert haben. –

Antwort

0

Auf jeden Fall möglich und machbar zumal Sie die Arbeit bereits getan haben - lesen Sie über Excel Automatisierung aus Word .... hier ein Good start for integrating Excel data into Word

+0

ist das nicht eher ein Kommentar als eine Antwort? –

+0

Es könnte ein Kommentar sein, wenn erwartet wird, dass jemand den ganzen Code schreibt, um das für ihn zu tun, aber ich dachte, es wäre eine effektive Antwort auf seine Frage "Wie effektiv Word konsolidieren und VBA-Funktionen übertreffen?" – dbmitch

+1

Danke dbmitch - in gewisser Hinsicht war das meistens das, was ich hören wollte. Es macht keinen Sinn, etwas zu tun, wenn die Software einfach nicht über die Programmierung verfügt. Wie man es macht, ist dann viel lohnender, wenn man erfolgreich ist. Ich hoffe nicht, jemanden zu finden, der Code für mich schreibt - glücklich, auf die harte Tour zu lernen. Danke für den Link - wird sicherlich studieren. – Supafied