![]() |
|
![]() |
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
![]()
Dear forum members. Regards
I have tried to ensure that when I use the macro in Excel, a Word .rtf document is filled with the disposition of the paragraphs as you can see in the file that I upload. First of all, i can't get all the rows to be passed in excel only the last one is passed. Also I cannot send the numbers (num and pts) I get error A8 .... and J8 ... I request you can collaborate with me on this topic My Excel is 2013 I upload the file for you to see I thank you in advance for your support |
#2
|
||||
|
||||
![]()
Firstly when you declare variables you should explicitly define each variable's type
Dim pregunta, opA, opB, opC, opD, ans, respC, explRC, dif, ref, obj, topic, pclave, prof As String In the above declaration, only prof is a string. All the other variables are variants. It needs to be written as Dim pregunta as String, opA as String, opB as String Secondly, your code creates a document and then start looping through the rows and before you move to the next row, you close the document. This means on the second pass of the loop, the document is no longer open. Did you want one document per row or are you creating a single document containing all the row content?
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
![]()
Truly very grateful. It is true!! I have removed 'objselection.Close savechanges: = True and now I have all the rows in one word document, which is how I need.
Now .TypeText num and .TypeText pts which is the numerical order of column A (from A8 ...) and Column J (from J8 ..) 3 points for each row I have now declared these num and pts variables as a variant, ... but it still gives me an error How should I declare them so that I don't get an error? |
#4
|
||||
|
||||
![]()
You have some strange syntax in your workbook. May I suggest that you try the following instead:
Code:
Sub ExWordPruebam2() Dim wordapp As Object Dim fs As Object Dim documento As Object Dim objselection As Object Dim fila, i As Integer Dim wdApp As Object Dim tema As String Dim nomprof As String Dim camino As String Dim num, pts As Integer Dim pregunta, opA, opB, opC, opD, ans, respC, explRC, dif, ref, obj, topic, pclave, prof As String Set wordapp = CreateObject("Word.Application") wordapp.Visible = True 'Set fs = CreateObject("Scripting.FileSystemObject") Set documento = wordapp.Documents.Add Set objselection = documento.Range tema = ThisWorkbook.Worksheets(1).Cells(1, 2).Value objselection.Text = tema & vbCr nomprof = ThisWorkbook.Worksheets(1).Cells(6, 2).Value objselection.Collapse 0 objselection.Text = nomprof & vbCr Range("A8").Select fila = Cells(Rows.Count, 1).End(xlUp).Row For i = 8 To fila num = ThisWorkbook.Worksheets(1).Cells(i, 1).Value pregunta = ThisWorkbook.Worksheets(1).Cells(i, 2).Value opA = ThisWorkbook.Worksheets(1).Cells(i, 3).Value opB = ThisWorkbook.Worksheets(1).Cells(i, 4).Value opC = ThisWorkbook.Worksheets(1).Cells(i, 5).Value opD = ThisWorkbook.Worksheets(1).Cells(i, 6).Value ans = ThisWorkbook.Worksheets(1).Cells(i, 7).Value respC = ThisWorkbook.Worksheets(1).Cells(i, 8).Value explRC = ThisWorkbook.Worksheets(1).Cells(i, 9).Value pts = ThisWorkbook.Worksheets(1).Cells(i, 10).Value dif = ThisWorkbook.Worksheets(1).Cells(i, 11).Value ref = ThisWorkbook.Worksheets(1).Cells(i, 12).Value obj = ThisWorkbook.Worksheets(1).Cells(i, 13).Value topic = ThisWorkbook.Worksheets(1).Cells(i, 14).Value pclave = ThisWorkbook.Worksheets(1).Cells(i, 15).Value prof = ThisWorkbook.Worksheets(1).Cells(i, 16).Value 'objselection.Font.Bold = True With objselection .Collapse 0 'A8... .Text = num & vbCr .Collapse 0 .Text = pregunta & vbCr .Collapse 0 .Text = "a. " & opA & vbCr .Collapse 0 .Text = "b. " & opB & vbCr .Collapse 0 .Text = "c. " & opC & vbCr .Collapse 0 .Text = "d. " & opD & vbCr .Collapse 0 .Text = "ANS: " & ans & vbCr .Collapse 0 .Text = "Repuesta correcta " & vbCr & respC & vbCr .Collapse 0 .Text = "Explicación de la respuesta " & vbCr & explRC & vbCr 'J8.... .Collapse 0 .Text = "PTS: " & pts & vbCr .Collapse 0 .Text = "DIF: " & dif & vbCr .Collapse 0 .Text = "REF: " & ref & vbCr .Collapse 0 .Text = "OBJ: " & obj & vbCr .Collapse 0 .Text = "TOP: " & topic & vbCr .Collapse 0 .Text = "KEY: " & pclave & vbCr .Collapse 0 .Text = "NOT: " & prof & vbCr End With With wordapp.ActiveDocument camino = ThisWorkbook.Path & "\" & nomprof .SaveAs Filename:=camino & ".rtf" .Close savechanges:=True End With Next i wordapp.Application.Quit 'Set fs = Nothing Set objselection = Nothing Set documento = Nothing Set wordapp = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
||||
|
||||
![]()
I don't see the problem with the data you posted but I did fix some of your code declarations and streamlined it which may have resolved the issue. Try this code with your real data and see if you still have the problem.
Code:
Sub ExWordPruebam2() Dim wordapp As Object, objWord As Object Dim fs As Object, documento As Object Dim objselection As Object Dim fila As Integer, i As Integer Dim tema As String, nomprof As String, camino As String Dim num As Integer, pts As Integer Dim pregunta As String, opA As String, opB As String, opC As String, opD As String Dim ans As String, respC As String, explRC As String, dif As String, ref As String Dim obj As String, topic As String, pclave As String, prof As String Set wordapp = CreateObject("Word.Application") Set fs = CreateObject("Scripting.FileSystemObject") Set documento = wordapp.Documents.Add Set objselection = wordapp.Selection tema = ActiveSheet.Cells(1, 2).Value objselection.TypeText tema & vbCr nomprof = ActiveSheet.Cells(6, 2).Value objselection.TypeText nomprof & vbCr Range("A8").Select fila = Cells(Rows.Count, 1).End(xlUp).Row wordapp.Visible = True For i = 8 To fila With ActiveSheet num = .Cells(i, 1).Value pregunta = .Cells(i, 2).Value opA = .Cells(i, 3).Value opB = .Cells(i, 4).Value opC = .Cells(i, 5).Value opD = .Cells(i, 6).Value ans = .Cells(i, 7).Value respC = .Cells(i, 8).Value explRC = .Cells(i, 9).Value pts = .Cells(i, 10).Value dif = .Cells(i, 11).Value ref = .Cells(i, 12).Value obj = .Cells(i, 13).Value topic = .Cells(i, 14).Value pclave = .Cells(i, 15).Value prof = .Cells(i, 16).Value End With With objselection .TypeText num & vbCr .TypeText pregunta & vbCr .TypeText "a. " & opA & vbCr .TypeText "b. " & opB & vbCr .TypeText "c. " & opC & vbCr .TypeText "d. " & opD & vbCr .TypeText "ANS: " & ans & vbCr .TypeText "Repuesta correcta " & vbCr .TypeText respC & vbCr .TypeText "Explicación de la respuesta " & vbCr .TypeText explRC & vbCr .TypeText "PTS: " & pts & vbCr .TypeText "DIF: " & dif & vbCr .TypeText "REF: " & ref & vbCr .TypeText "OBJ: " & obj & vbCr .TypeText "TOP: " & topic & vbCr .TypeText "KEY: " & pclave & vbCr .TypeText "NOT: " & prof End With Next i With wordapp.ActiveDocument camino = ThisWorkbook.Path & "\" & nomprof .SaveAs Filename:=camino & ".rtf" .Close savechanges:=True End With wordapp.Application.Quit Set fs = Nothing Set objselection = Nothing Set documento = Nothing Set wordapp = Nothing End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#6
|
|||
|
|||
![]()
regards
I have been reviewing, slowly and have noticed the following: The .TypeText code has a lot to do with the encoding. The variables have to be declared as explained by Guessed, otherwise it is a reason for error. In addition, with .TypeText the response speed is immediate, not so, with the gmayor code, with which the result is obtained well, however it takes too long. The comparison was made by making adjustments to both codes because the Guessed code did not number each question. While in the gmayor code I had to get --- (With wordapp.ActiveDocument path = ThisWorkbook.Path & "" & nomprof .SaveAs Filename: = path & ".rtf" .Close savechanges: = True ") outside the for - next because I want everything in a single document. Equalizing everything I see that .TypeTex allows a much faster result. I am very grateful to both for the resolution of this topic, I have learned a lot |
![]() |
Tags |
excel 2013, vba, word 2013 |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
reverse order of paragraphs, word 2010 | moorea21 | Word VBA | 1 | 08-02-2018 03:47 AM |
![]() |
Ivica | Word | 3 | 12-28-2015 01:31 PM |
![]() |
FromF | Excel | 2 | 09-09-2014 02:30 AM |
Office 2010 Excel Full pass | raineraus | Excel | 1 | 09-19-2012 12:55 PM |
![]() |
Coreysan | Mail Merge | 3 | 12-11-2011 04:22 PM |