[英]Excel VBA - Autofit multiple charts & tables into word at bookmarks?
在將多個聊天記錄和表格粘貼到已定義書簽中的單詞時,我很難將Autofit添加到子項中。 我嘗試了多種方法,但是我缺乏經驗,這說明我無法通過添加或添加自動調整功能來使子菜單失敗或無法自動調整。
它運行良好,如下所示:
'To open a template word file '"C:\Users\USER\Documents\Custom Office Templates\Test161231.dotm"
'To copy ranges and charts as referenced on this excel workbook sheet "Bookmarks"
'To paste ranges and charts at predefined bookmarks within the open word template as referenced on this excel workbook sheet "Bookmarks"
'To save the open word template as a .Docx
Sub OpenPopulateSave()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Dim x As Long
Dim LastRow As Long
Dim SheetChart As String
Dim SheetRange As String
Dim BookMarkChart As String
Dim BookMarkRange As String
Dim Prompt As String
Dim Title As String
'Turn some stuff off while the macro is running
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
'Determine the last row of data for our loop
LastRow = Sheets("Bookmarks").Range("A" & Rows.Count).End(xlUp).Row
'Create an instance of Word for us to use
Set wApp = CreateObject("Word.Application")
'Open our specified Word file, On Error is used in case the file is not there
On Error Resume Next
Set wDoc = wApp.Documents.Open("C:\Users\USER\Documents\Custom Office Templates\Test161231.dotm", ReadOnly:=True)
On Error GoTo 0
'If the file is not found, we need to end the sub and let the user know
If wDoc Is Nothing Then
MsgBox "Unable to find the Word file.", vbCritical, "File Not Found"
wApp.Quit
Set wApp = Nothing
Exit Sub
End If
'Copy/Paste Loop starts here
For x = 2 To 20
'Use the Status Bar to let the user know what the current progress is
Prompt = "Copying Data: " & x - 1 & " of " & LastRow - 1 & " (" & _
Format((x - 1) / (LastRow - 1), "Percent") & ")"
Application.StatusBar = Prompt
'Assign the worksheet names and bookmark names to a variable
'Use With to group these lines together
With ThisWorkbook.Sheets("Bookmarks")
SheetChart = .Range("A" & x).Text
SheetRange = .Range("B" & x).Text
BookMarkChart = .Range("C" & x).Text
BookMarkRange = .Range("D" & x).Text
End With
If Len(BookMarkRange) > 0 Then
'Tell Word to goto the bookmark assigned to the variable BookMarkRange
wApp.Selection.Goto What:=wdGoToBookmark, Name:=BookMarkRange
'Copy the data from Thisworkbook
ThisWorkbook.Sheets(SheetRange).UsedRange.Copy
'Paste into Word
wApp.Selection.Paste
'Autofit Table so it fits inside Word Document window
'?
End If
If Len(BookMarkChart) > 0 Then
'Tell Word to goto the bookmark assigned to the variable BookMarkChart
wApp.Selection.Goto What:=wdGoToBookmark, Name:=BookMarkChart
'Copy the data from Thisworkbook
ThisWorkbook.Sheets(SheetChart).ChartObjects(1).Copy
'Paste into Word
wApp.Selection.Paste
'Autofit Chart so it fits inside Word Document window
'?
End If
Next
'Turn everything back on
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.StatusBar = False
'Let the user know the procedure is now complete
Prompt = "Your report has now been generated." & vbCrLf & vbCrLf & "You may now edit the word document."
Title = "Procedure Completion"
MsgBox Prompt, vbOKOnly + vbInformation, Title
'Make our Word session visible
wApp.Visible = True
With wDoc
.SaveAs ActiveWorkbook.Path & Application.PathSeparator & "Test3_" & Format(Now, "yyyy-mm-dd hh-mm") & ".docx", FileFormat:=wdFormatXMLDocument
wApp.DisplayAlerts = True
End With
'Clean up
Set wApp = Nothing
Set wDoc = Nothing
End Sub
任何幫助和其他有用的意見,將不勝感激! 我仍處於早期學習階段。
我可以立即找到以下內容:
Set wApp = CreateObject("Word.Application")
兩次(在變量聲明期間和LastRow = Sheets("Bookmarks").Range("A" & Rows.Count).End(xlUp).Row
) Exit Sub
停止代碼時,請注意,您再次打開了“一些東西”(ScreenUpdating,警報,事件)(請參閱: If wDoc Is Nothing Then
) For x = 2 To 20
循環,但是您從未真正循環(沒有next x
) For x = 2 To LastRow
)。 Dim WordTable As Word.Table
,請嘗試: Set WordTable = myDoc.Tables(1)
Dim WordTable As Word.Table
, Set WordTable = myDoc.Tables(1)
,將WordTable.AutoFitBehavior (wdAutoFitWindow)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.