![]() |
#31
|
|||
|
|||
![]() Quote:
At this point, here is what I am trying to accomplish: Create 3 macros, one for each column of the word table that I am trying to paste into (the -20,5,22). These macros will be near identical, except for the paste location. I want to open up a user selected file, copy a cell that is the avg of the data I am analyzing, and paste it into the first blank cell of the correlating column in the word table. Does this make sense? Let me know what other information you would like. Macropod thank you for bearing with me, I am sure new users can cause frustration for pros like you! Hoping to get better with this skill. |
#32
|
||||
|
||||
![]()
It's not apparent to me how anything in your workbook relates to the table in your document.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#33
|
|||
|
|||
![]()
how is it not apparent? Do you mean my code, or my task in general?
From the excel file, I want to take the average mean, which for this instance is located in cell e4, and for each SET POINT, which are -20,5,22, I want to paste it into that column of the word table. So if the set point is -20 I want to paste into the first empty cell of the -20 column, If it is 5 I want to paste into the first empty cell of the 5 column If it is 22 I want to paste into the first empty cell of the 22 column. To differentiate the set points, I have been using if statements, but that has been messy so now I am trying to write three separate macros for each set point. I will be using these macros on the same word table continuously and wish not to change the paste location in the macro every time it is run. I want to find the first empty cell in the specified column, and then select/paste into it or write it in. |
#34
|
|||
|
|||
![]() Code:
Sub CopyAndPaste() Dim myfile, wdApp As New Word.Application, wDoc As Word.Document 'select truck report file ChDrive "E:\" ChDir "E:\WG\TVAL\" myfile = Application.GetOpenFilename(, , "Browse for Document") Dim i As Integer 'searches for row with "avg" then selects column E(avg of temperature mean) of that row. i = Application.Match("Avg", Sheet1.Range("A1:A20"), 0) 'copies the cell Range("E" & i).Select Selection.Copy 'makes the file appear wdApp.Visible = True Set wDoc = wdApp.Documents.Open(myfile) With wDoc 'selects the paste range in the performance review table, depending on the set point If Range("c2") = 22 Then wDoc.Tables(8).Cell(4, 1).Select If Range("c2") = 5 Then wDoc.Tables(8).Cell(4, 2).Select If Range("c2") = -20 Then wDoc.Tables(8).Cell(4, 3).Select 'and paste the clipboard contents wdApp.Selection.Collapse wdCollapseEnd wdApp.Selection.Paste wdApp.Selection.Font.Name = "Times New Roman" wdApp.Selection.Font.Size = 12 wdApp.Selection.Font.Bold = wdToggle Application.CutCopyMode = False Application.ScreenUpdating = True wDoc.Tables(8).Cell(4, 0).Select wdApp.Selection.TypeText Text:="Performance Review" wDoc.Tables(8).Rows(4).Select wdApp.Selection.Shading.Texture = wdTextureNone wdApp.Selection.Shading.ForegroundPatternColor = wdColorAutomatic wdApp.Selection.Shading.BackgroundPatternColor = -603914241 End With wDoc.Save End Sub |
#35
|
||||
|
||||
![]() Quote:
Quote:
Quote:
Kindly also correct your user profile; it's impossible to know what we're coding for when it says you're using Office 2016 for Mac on a Windows 7 platform...
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#36
|
|||
|
|||
![]()
Okay sorry for not being clear before.
Here is what I have now and it works! Code:
Sub CopyAndPaste() Dim myfile, wdApp As New Word.Application, wDoc As Word.Document 'select truck report file ChDrive "E:\" ChDir "E:\WG\TVAL\" myfile = Application.GetOpenFilename(, , "Browse for Document") Dim i As Integer 'searches for row with "avg" then selects column E(avg of temperature mean) of that row. i = Application.Match("Avg", Sheet1.Range("A1:A20"), 0) 'makes the file appear wdApp.Visible = True Set wDoc = wdApp.Documents.Open(myfile) With wDoc Dim oRow As Row For Each oRow In wDoc.Tables(8).Rows If Len(oRow.Range) = 16 Then With oRow .Cells(1).Range.Text = "Performance Review" .Cells(2).Range.Text = "" .Cells(3).Range.Text = Range("e" & i) .Cells(4).Range.Text = "" .Cells(5).Range.Text = "" End With Exit For End If Next End With wDoc.Save End Sub All that is left that I would like to do is to change the background color if there is text in a row. I was thinking something like Code:
If Len(oRow.Range) >= 16 Then With oRow Shading.Texture = wdTextureNone Change.Shading.ForegroundPatternColor = wdColorAutomatic Change.Shading.BackgroundPatternColor = -603914241 End If End With All together it looks like this Code:
Sub CopyAndPaste() Dim myfile, wdApp As New Word.Application, wDoc As Word.Document 'select truck report file ChDrive "E:\" ChDir "E:\WG\TVAL\" myfile = Application.GetOpenFilename(, , "Browse for Document") Dim i As Integer 'searches for row with "avg" then selects column E(avg of temperature mean) of that row. i = Application.Match("Avg", Sheet1.Range("A1:A20"), 0) Range("E" & i).Select Selection.Copy 'makes the file appear wdApp.Visible = True Set wDoc = wdApp.Documents.Open(myfile) With wDoc Dim oRow As Row For Each oRow In wDoc.Tables(8).Rows If Len(oRow.Range) = 16 Then With oRow .Cells(1).Range.Text = "Performance Review" .Cells(2).Range.Text = Range("e" & i) .Cells(3).Range.Text = "" .Cells(4).Range.Text = "" .Cells(5).Range.Text = "" End With End If Next If Len(oRow.Range) >= 16 Then With oRow Shading.Texture = wdTextureNone Change.Shading.ForegroundPatternColor = wdColorAutomatic Change.Shading.BackgroundPatternColor = -603914241 End If End With wDoc.Save End Sub |
#37
|
|||
|
|||
![]()
Okay I noticed something about my code that will not get me quite where I want it to be. when I run each one, I want it to be placed into the first blank cell per the column. Essentially, we are running 3 variables to test the overall quality of a unit.
So I do not want each macro to enter into a new row, I only want the first macro (the 22) to type in "Performance Review" and enter the excel data into the first empty cell in the "22" column. I want the second macro to only enter the excel data into the first empty cell in the "5" column and the third macro I want it to enter data into the first empty cell of the "-20" column. Lastly, if there is no data to report, I would like to make a 4th macro that will take the last cell with data in it and copy it down to the first empty cell of that column. |
![]() |
Tags |
bookmark, if statement, vba |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
rebmaboss | Word | 1 | 11-25-2016 02:30 AM |
Pasting text from Excel cell into word without creating a table, and keeping the in-cell formatting | hanvyj | Excel Programming | 0 | 08-28-2015 01:15 AM |
How to insert a table using bookmarks in a document | Catty | Word VBA | 3 | 05-04-2015 03:05 AM |
![]() |
Niy | Word | 3 | 03-28-2012 12:18 AM |
Pasting table in Photoshop cutting off table | azdolfan | Word Tables | 0 | 05-16-2010 01:52 PM |