aplicación word-vba

El objeto de este artículo es: hay una cierta base de Excel VBA, no se comprende Word VBA, las personas que desean operar Word a través de VBA en Excel siguen siendo difíciles.

1. Nueva referencia de Word
Primero debe crear una referencia al objeto de aplicación de Word. En VBA, Herramientas-Referencia, seleccione "Biblioteca de objetos MicroSoft Word 11.0".
Método 1: Nuevo Word.Application
Dim Wordapp como Word.Application
Set Wordapp = NewWord.Application
Wordapp.Visible = Verdadero 'Visible
' Wordapp.ScreenUpdating = False 'Actualizar pantalla
Dim WordD como Word.Document' Definir la clase de palabra
Establecer WordD = Wordapp. Documents.Add 'New Document
' Set WordD = Wordapp.Documents.open (filename) 'Open Document
' ...
WordD.Close 'Close Document
Set WordD = Nothing
WordApp.Quit' Exit Word Object
Method Two, CreateObject
Dim WordApp As Object
Set WordApp = CreateObject ("Word.Application") La
operación de seguimiento y la salida de 'New Word Object ' son las mismas ...
Método tres, GetObject
Cuando el archivo ya está abierto, use: SetWordD = GetObject (nombre de archivo) para establecer una referencia al documento. Si el archivo no está abierto, primero debe usar el método uno o dos.
En cuanto a la diferencia entre el método uno y el método dos, pregunté en Internet. La respuesta de los maestros es:
Método uno: enlace temprano, la ventaja es que ingresar un período después del objeto puede dar un recordatorio rápido, ya que primero debe referirse al objeto, por lo que es fácil aparecer Problemas de compatibilidad de versiones.
Método 2: Enlace tardío, sin solicitud, cree un objeto de acuerdo con la versión del objeto en la máquina que ejecuta el código, y la compatibilidad es buena.
Sugerencia: a veces hay una gran diferencia entre los dos. Los foros pueden buscar objetos de diccionario. Se recomienda utilizar el enlace temprano al escribir código y el enlace tardío al publicar.

En segundo lugar, comprenda la estructura de Word
Excel:
Excel.Aplicación 'Excel hace referencia a
Excel.Aplicación. Libro de trabajo de libros
Excel.Aplicación. Libros de trabajo . Hojas (1)' La hoja de trabajo de la hoja de trabajo
es Rango, área; Celdas (fila, columna) , La celda
Word tiene:
Word.Application
Word.Application.Documents 'documentos
debajo del documento hay caracteres, palabras, oraciones, párrafos y secciones. Los personajes forman palabras, las palabras forman oraciones y las oraciones forman párrafos. Además, cada documento tiene una colección de Secciones que contiene una o más secciones, y cada sección tiene una colección HeadersFooters que contiene el encabezado y pie de página de la sección.
Caracteres (índice)
Palabras (índice)
Oraciones (índice)
Párrafos (índice)
Secciones (índice) Los
primeros tres objetos de Rango devueltos, puede usar directamente cualquier propiedad de área o método para modificar el objeto Rango. Los dos últimos devuelven un solo miembro de la colección, no un objeto Range, y no puede usar directamente una propiedad o método local. El siguiente ejemplo de uso: palabras (1) directamente después de .Copy, y hay un rango entre .Paragraphs (1) y .Copy.
Selection.Words (1) .Copy
ActiveDocument.Paragraphs (1) .Range.Copy
Caracteres: personajes, ActiveDocument.Sentences (1) .Characters.Count, el número total de caracteres en la primera oración.
Palabras: Las palabras, para inglés, son letras entre dos espacios más espacios, para chino, un signo de puntuación, un carácter chino o una palabra (como se define por la frase en el método de entrada de Microsoft?). (¿No se siente muy confiable?)
Oraciones: ¿Oraciones que terminan con un punto? No creo que sea un rango muy confiable. Siento que todavía son caracteres, párrafos y secciones. Es más confiable controlarlo.
El objeto Rango representa un rango continuo en el documento, definido por una posición de carácter inicial y una posición de carácter final. Este rango continuo puede ser tan pequeño como un punto de inserción y tan grande como todo el documento.
Dim rngPa As Range
Set rngPa = ActiveDocument. Characters (1) 'First character
Set rngPa = ActiveDocument.Range (_
Start: = ActiveDocument.Paragraphs (1) .Range.Start, _
End: = ActiveDocument.Paragraphs (4) .Range.End) '
Establecer rngPa = ActiveDocument.Range (Start: = 0, End: = 10) desde el comienzo del primer párrafo hasta el final del cuarto párrafo .' Los primeros 10 caracteres del documento actual son seleccionados por
rngPa.Select
, creo que no es muy útil , ¿Por qué se selecciona? Si puede, puede operarlo directamente. Si no puede, simplemente elíjalo (él puede decir que no hay manera).
Asignación de objetos de rango: (incluidos los objetos arbitrarios, Set es la declaración estándar para asignar objetos)
set a = b
Y asignación variable: a = 1 no es lo mismo

El tercer párrafo: Genere código grabando macros, modificado como sigue:

Tercero, genere código grabando macros. Entendiendo
la estructura básica de Word, ¿qué métodos deberían usarse para manipular estos objetos y qué atributos deberían modificarse? "Graba una macro" si no lo sabes. Grabar macros es una de las mejores maneras de reconocer objetos desconocidos: la grabadora de macros traduce las operaciones en el código de Visual Basic de Word y luego modifica el código según sea necesario. La diferencia entre grabar en Word y Excel es que no puede usar el mouse para mover el cursor o seleccionar una fila, solo puede usar el teclado para mover, o usar Shift + teclas de flecha para seleccionar. Las siguientes oraciones están en el teclado: arriba, abajo, izquierda, derecha, Inicio, Fin, Mayús + izquierda seleccionar 5 caracteres, Mayús + derecha seleccionar 5 caracteres.
Selection.MoveUp Unit: = wdLine, Count: = 1
Selection.MoveDown Unit: = wdLine, Count: = 1
Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Selection.MoveRight Unit: = wdCharacter, Count: = 1
Selection. unidad Homekey: = wdLine
unidad Selection.EndKey: = wdLine
unidad Selection.MoveLeft: = wdCharacter, el conde: = 5, Extend: = wdExtend
unidad Selection.MoveRight: = wdCharacter, el conde: = 5, Extend: = wdExtend
macros grabadas utilizan La propiedad Selection devuelve un objeto Selection. Es decir: la macro grabada siempre comienza con Selección., Como arriba. Para usar esta selección, a veces tenemos que seleccionar el objeto específico.
Por supuesto, la selección es un rango, los caracteres, las palabras y las oraciones también son rangos, párrafos (n). Rango, secciones (2). El rango también es rango, entonces podemos unir las declaraciones después de la selección. Primero, selecciona.
Después de que la macro grabada se injerta o copia a EXCEL VBA, algunas operaciones serán incorrectas. En este momento, se deben verificar los siguientes elementos:
1. ¿Se ha establecido la "referencia" requerida en el primer elemento?
2. Use la función de recordatorio de VBA para verificar las declaraciones. Durante el proceso de edición de VBA, generalmente después de escribir. (¿Necesita un enlace anticipado?), Se mostrarán todos los métodos y propiedades del objeto. Con esta función, puede verificar si la macro grabada puede injertarse en el objeto que necesita ser operado. Puedes hacerlo si lo tienes, pero no puedes si no lo tienes.
3. Algunas funciones de conversión están disponibles en Word VBA y pueden no estar disponibles en Excel VBA, en tales casos, pueden ocurrir errores.
Ejemplo:
WordD.Paragraphs (1) .Range.ParagraphFormat.FirstLineIndent = CentímetrosToPoints (0.35)
Selection.ParagraphFormat.FirstLineIndent = CentímetrosToPoints (0.35) se registra mediante la operación "sangría de primera línea de 2 caracteres", después del injerto, el error de operación, verifique de acuerdo con el método 2: .ParagraphFormat.FirstLineIndent se puede usar después de Rango, luego es CentímetrosToPoints (0.35) Algo va mal? Obviamente, esta es una función, que literalmente significa "centímetros convertidos en puntos" (ingresé explícitamente "2 caracteres" cuando grabé, y ¿qué se registró como centímetros?) ¿Esta función no está disponible en Excel VBA? ? (No lo sé), cambie el número directamente después de = para ejecutarlo y, finalmente, pruébelo = 20 es equivalente a los "caracteres de sangría de primera línea 2" del quinto carácter. (¿Estos 20 son 20 puntos? 0.35cm = 20 puntos?)
(Algunas personas pueden decir que este método es demasiado estúpido, por favor avíseme si hay una buena manera . ¡Gracias de antemano !)

Cuarto, oraciones comunes de Word vba 100 oraciones
1, parámetros del sistema
(01) Application.ActivePrinter 'Obtener la impresora actual
(02) Application.Height' Altura de documento de aplicación actual
(03) Application.Width 'Ancho de documento de aplicación actual
(04 ) Application.Build 'Obtener el número de versión de Word y el número de compilación
(05) Application.Caption' Nombre de la aplicación actual
(06) Application.DefaultSaveFormat 'Devuelve una cadena vacía, lo que significa que el documento de Word
(07) Application.DisplayRecentFiles' Devuelve si se mostrará el último utilizado El estado del documento
(08) Application.Documents.Count 'Devuelve el número de documentos abiertos actualmente
(09) Application.FontNames.Count' Devuelve el número de fuentes disponibles actualmente
(10) Application.Left 'Devuelve la posición horizontal del documento actual
(11) Application.MacroContainer.FullName 'Devuelve el nombre del documento actual, incluida la ruta
Application.MacroContainer.pach' Devuelve la ruta del documento actual
Application.ActiveDocument.Path 'Obtiene la ruta relativa del archivo
(12) Application.NormalTemplate.FullName' Devuelve el nombre de la plantilla estándar del documento y Ubicación
(13) Application.RecentFiles.Count 'Devuelve el número de documentos abiertos recientemente
(14) Application.System.CountryRegion' Devuelve el código de región de la aplicación
(15) Application.System.FreeDiskSpace 'Devuelve el espacio disponible en disco de la aplicación
(16) Application.System.HorizontalResolution 'Devuelve la resolución horizontal de la pantalla
(17) Application.System.VerticalResolution' Devuelve la resolución vertical de la pantalla
(18) Application.System.LanguageDesignation 'Devuelve el lenguaje utilizado por el sistema
(19) Application.System.MathCoprocessorInstalled 'Devuelve si el sistema ha instalado un coprocesador matemático
(20) Application.System.OperatingSystem' Devuelve el nombre del sistema operativo actual
(21) Application.System.ProcessorType 'Devuelve el nombre del procesador de la computadora
(22) Application.System.Version' Regresa al sistema operativo El número de versión
(23) Application.Templates.Count 'Devuelve el número de plantillas utilizadas por la aplicación
(24) Application.UserName' Devuelve el nombre de usuario de la aplicación
(25) Application.Version 'Devuelve el número de versión de la aplicación

2. Documentos / Objeto de documento
(26) ActiveDocument.AttachedTemplate.FullName 'Devuelve el nombre de la plantilla y la ubicación de la plantilla utilizada en el documento actual
(27) ActiveDocument.Bookmarks.Count' Devuelve el número de marcadores en el documento actual
(28) ActiveDocument.Characters.Count 'Devuelve el número de caracteres en el documento actual
(29) ActiveDocument.CodeName' Devuelve el nombre del código del documento actual
(30) ActiveDocument.Comments.Count 'Devuelve el número de comentarios en el documento actual
(31) ActiveDocument.Endnotes.Count' Devuelve el documento actual Notas finales
(32) ActiveDocument.Fields.Count 'Devuelve el número de campos en el documento actual
(33) ActiveDocument.Footnotes.Count' Devuelve el número de notas al pie en el documento actual
(34) ActiveDocument.FullName 'Devuelve el nombre completo y la ubicación del documento actual Posición
(35) ActiveDocument.HasPassword 'Si el documento actual está protegido por contraseña
(36) ActiveDocument.Hyperlinks.Count' Devuelve el número de enlaces en el documento actual
(37) ActiveDocument.Indexes.Count 'Devuelve el número de índices en el documento actual
(38) ActiveDocument .ListParagraphs.Count 'Devuelve el número de elementos o viñetas en el documento actual
(39) ActiveDocument.ListTemplates.Count 'Devuelve el número de plantillas de lista utilizadas en el documento actual
(40) ActiveDocument.Paragraphs.Count' Devuelve el número de párrafos en el documento actual
(41) ActiveDocument.Password = XXX 'Establezca la contraseña utilizada para abrir el archivo
( 42) ActiveDocument.ReadOnly 'Obtiene si el documento actual es de solo lectura
(43) ActiveDocument.Saved' Si se guarda el documento actual
(44) ActiveDocument.Sections.Count 'Número de secciones en el documento actual
(45) ActiveDocument.Sentences.Count' El número de declaraciones en el documento actual
(46) ActiveDocument.Shapes.Count 'Número de formas en el documento actual, gráficos?
(47) ActiveDocument.Styles.Count 'Número de estilos en el documento actual
(48) ActiveDocument.Tables.Count' Número de tablas en el documento actual
(49) ActiveDocument.TablesOfAuthorities.Count 'Devuelve el número de directorios de citas en el documento actual
(50) ActiveDocument.TablesOfAuthoritiesCategories.Count 'Devuelve el número de categorías de citas en el documento actual
(51) ActiveDocument.TablesOfContents.Count' Devuelve el número de directorios en el documento actual
(52) ActiveDocument.TablesOfFigures.Count 'Devuelve el número de directorios de gráficos en el documento actual

3. Párrafos / Objeto de párrafo
(53) Selection.Paragraphs.Count 'Devuelve el número de párrafos en el área seleccionada
(54) Selection.Paragraphs.First' Devuelve el primer párrafo en el área seleccionada
(55) ActiveDocument.Paragraphs (1). LeftIndent 'Devuelve el valor de sangría izquierda del primer párrafo en el documento actual
(56) ActiveDocument.Paragraphs (1) .LineSpacing' Devuelve el espacio entre líneas del primer párrafo en el documento actual
(57) ActiveDocument.Paragraphs (1) .OutlineLevel 'Devuelve o establece Nivel del primer párrafo del documento actual:
OutlineLevel = wdOutlineLevel2 'Nivel
2. OutlineLevel = wdOutlineLevel3' Nivel 3
(58) ActiveDocument.Paragraphs (1). RightIndent 'Devuelve la sangría derecha del primer párrafo del documento actual
(59) ActiveDocument.Paragraphs (1) .SpaceBefore 'Devuelve el espacio antes del primer párrafo del documento actual
(60) ActiveDocument.Paragraphs (1) .SpaceAfter' Devuelve el espacio después del primer párrafo del documento actual
(61) ActiveDocument.Paragraphs ( 1) .Range.Text 'Devuelve el contenido del primer párrafo del documento actual
(62) ActiveDocument.Paragraphs (1) .Range.Style.NameLocal 'Devuelve el nombre de estilo aplicado en el primer párrafo del documento actual
(63) ActiveDocument.Paragraphs (1) .Range.Style.Description' Devuelve el primer párrafo del documento actual Descripción detallada del estilo aplicado
(64) ActiveDocument.Paragraphs (1) .Range.Style.Font.Name 'Devuelve el nombre de fuente del estilo aplicado en el primer párrafo del documento actual
(65) ActiveDocument.Paragraphs (1) .Range.Style .Font.NameFarEast 'Devuelve o establece un nombre de fuente de Asia Oriental
(66) ActiveDocument.Paragraphs (1) .Range.Style.Font.Size' Devuelve o establece el tamaño de fuente del estilo aplicado en el primer párrafo del documento actual
(67) ActiveDocument .Paragraphs (1) .Range.Style.Font.Spacing 'Devuelve o establece el espaciado de caracteres
(68) Selection.Words.Count' Sentencias objeto del área seleccionada
(69) Selection.Sentences.Item (1) 'Área seleccionada El contenido de la primera oración en el objeto de palabras
(71) ActiveDocument.Words (1). Seleccione 'Seleccione la primera palabra en el documento actual
(72) ActiveDocument.Range.Words (1) .InsertAfter "I love you!" Inserte "Te amo" después de la primera palabra en el documento actual

4. Objeto de caracteres
(73) Selection.Characters.Count 'Número de caracteres en el área seleccionada del documento actual
(74) ActiveDocument.Paragraphs (1) .Range.InsertParagraphAfter' inserta un nuevo párrafo después del primer párrafo del documento actual

5. Secciones / Objetos de sección
(75) ActiveDocument.Sections.First 'Primera sección del documento actual
(76) ActiveDocument.Sections.First.PageSetup.BottomMargin' Margen inferior de la página donde se encuentra la primera sección del documento actual
(77) ActiveDocument. Sections.First.PageSetup.LeftMargin 'Margen izquierdo de la página donde se encuentra la primera sección del documento actual
(78) ActiveDocument.Sections.First.PageSetup.RightMargin' Margen derecho de la página donde se encuentra la primera sección del documento actual
(79) ActiveDocument.Sections.First. PageSetup.TopMargin 'El margen superior de la página donde se encuentra la primera sección del documento actual
(80) ActiveDocument.Sections.First.PageSetup.PaperSize' Devuelve o establece el tamaño de la página donde se encuentra la primera sección del documento actual
(81) ActiveDocument.Sections.First.PageSetup .PageHeight 'Devuelve o establece el alto de la página donde se encuentra la primera sección del documento actual
(82) ActiveDocument.Sections.First.PageSetup.PageWidth' Devuelve o establece el ancho de la página donde se encuentra la primera sección del documento actual
(83) ActiveDocument.Sections.Add Range: = myRange 'Agregar una nueva sección en el documento actual
(84) ActiveDocument.Sections.Item (2)' La segunda sección en el documento actual
(85) ActiveDocument.Sections.Last.Range.InsertAfter "End of document!" 'Agregue el texto "End of document!" Al final de la última sección del documento actual

6. Objeto Range
(86) ActiveDocument.Range (Start: = 0, End: = 10) 'Representa un objeto Range compuesto por los primeros 10 caracteres del documento actual
(87) Establezca myRange = ActiveDocument.Range (Start: = ActiveDocument. Párrafos (2) .Range.Start, _
End: = ActiveDocument.Paragraphs (4) .Range.End) 'Establezca los párrafos 2 a 4 del documento actual como un objeto Range
(88) ActiveDocument.Paragraphs (1). Range.Copy 'Copie el primer párrafo del documento actual
(89) Selection.Copy
Documents.Add.Content.Paste' Copie el contenido seleccionado en un nuevo documento
(90) ActiveDocument.Bookmarks ("Book1"). Copie el nombre: = "Book2" 'Copie el marcador Book2 a la ubicación del marcador del marcador Book1
(91) Selection.GoTo What: = wdGoToLine, Which: = wdGoToAbsolute, Count: = 4' Mueva la selección a la línea 4 del documento
(92) Selection .GoTo What: = wdGoToTable, Which: = wdGoToNext 'Mover la selección a la primera celda de la siguiente tabla
(93) Selection.Range.AutoFormat' Aplicar el formato a la selección
(94) ActiveDocument.Content.Font.Name = "Arial" 'Establezca la fuente del documento actual en cursiva
(95) ActiveDocument.Content.Select Selection.Delete' Elimine el contenido del documento actual en otros
(96) Documentos.Agregue ' Agregar un nuevo documento
(97) Establecer myTable = ActiveDocument.Tables.Add (Selection.Range, 2, 2) 'Agregar una tabla con 2 filas y 2 columnas en el área seleccionada del documento actual

7. Lectura y escritura de archivos
(98) Abra “C: \ my.txt” Para la entrada como n. ° 1 'Abra un archivo para entrada y hágalo numerado 1
(99) Línea Entrada n. ° 1, TextLine' Se abre la lectura Archivo número 1 para entrada
(100) Cerrar # 1 'Cerrar archivo número 1

5. Ejemplos. Las operaciones en el ejemplo se registran y luego se injertan.
Ejemplo: Usando Excel VBA, la siguiente tabla de Excel (el banco de preguntas exportado en el sistema de examen) se generará como el siguiente documento de Word.
Nombre del procedimiento Tipo de pregunta pregunta contenido contenido respuesta A respuesta B respuesta C respuesta D puntaje de respuesta correcta hay un
procedimiento gráfico 1 pregunta de opción múltiple 1 ……………………………… ABCD 2  
Procedimiento 1 Juicio Pregunta 2 …… Par 2  
                   
Procedimiento 2 Opción múltiple Pregunta 3 …………………………………… A 2  
Procedimiento 2 Juicio Pregunta 4 4 Incorrecto 2

Procedimiento 1
1. Pregunta de opción múltiple
1, pregunta 1 (ABCD)
A, ...
B, ...
C, ...
D, ...

2. Sentencia Pregunta
1, Pregunta 2 ... (Sí)
Procedimiento 2
1. Opción múltiple
Pregunta 1, Pregunta 3 ... (A)
A, ...
B, ...
C, ...
D, ...

2. Sentencia pregunta
1, pregunta 4 ... (incorrecta)

Sub ScWordWd ()
'Genera el documento de Word en el formato del " Banco de preguntas"
Dim I como entero, J como entero, Zhs como entero, Xh como entero, Dls como cadena
Dim Lr como cadena, Bt como cadena, Bt1 como cadena , Tx como cadena, Tx1 como cadena
Dim Lj como cadena, Wjm como cadena
Dim AA

Sheets("题库").Select
Zhs = Sheets("题库").UsedRange.Rows.Count
Bt = Cells(2, 1)         '标题
Tx = Cells(2, 2)         '题型
Xh = 1                   '
Dls = 1                 '

'Dim WordApp As Object
'Set WordApp = CreateObject("Word.Application")     '新建Word对象

Dim Wordapp As Word.Application
Set Wordapp = New Word.Application      '新建Word对象
Wordapp.Visible = True                    '可见
'Wordapp.ScreenUpdating = False             '屏幕刷新

Dim WordD As Word.Document      '定义word类
Set WordD = Wordapp.Documents.Add                  '新建文档

Wordapp.Selection.WholeStory                   '全选
Wordapp.Selection.Font.Name = "宋体"           '字体
Wordapp.Selection.Font.Size = 10               '字号

For I = 2 To Zhs
    Bt1 = Cells(I, 1)
    WordD.Paragraphs(Dls).Range.Font.Name = "宋体"             '字体
    WordD.Paragraphs(Dls).Range.Font.Size = 10                 '字号
    If Len(Trim(Bt1)) > 0 Then
        Tx1 = Cells(I, 2)
        Lr = Cells(I, 3)
        If Bt1 <> Bt Then         '标题不同,写标题,居中
            If I > 5 Then       '
                WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf)   '插入回车符,增加一段
                Dls = Dls + 1
                WordD.Paragraphs(Dls).Range.Select
                'Wordapp.Selection.InsertBreak Type:=wdPageBreak
                'WordD.Paragraphs(Dls).Range.InsertBreak Type:=wdPageBreak           '插入分页符,两个都没反应?
                Wordapp.Selection.InsertBreak Type:=wdSectionBreakNextPage      '插入分节符(下一页)
                WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf)              '插入回车符,增加一段
                Dls = Dls + 1
            End If
            Bt = Bt1
            WordD.Paragraphs(Dls).Range.Text = Bt & vbCrLf            '写标题
            'WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf)        '插入回车符,增加一段
            WordD.Paragraphs(Dls).OutlineLevel = wdOutlineLevel2      '设置大纲级别,2级
            'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0)
            WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 0       '取消首行缩进
            'WordD.Paragraphs(Dls).Range.Font.Name = "宋体"             '字体
            'WordD.Paragraphs(Dls).Range.Font.Size = 10                 '字号
            WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter          '居中排列
            WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle           '加粗
            Dls = Dls + 1
            Xh = 1
        End If
        If Tx1 <> Tx Then           '题型不同,写题型
            If Tx1 = "选择题" Then
                WordD.Paragraphs(Dls).Range.Text = "一、选择题"                      '写题型
            Else
            WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf)           '插入回车符,增加一段
            Dls = Dls + 1
                WordD.Paragraphs(Dls).Range.Text = "二、判断题"                      '写题型
            End If
            Tx = Tx1
            WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify     '左对齐
            'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35)       '首行缩进2字符,时能用时不能用,CentimetersToPoints不能被Excel识别?
            WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 20         '首行缩进,20大约相当于5号字的2字符
            WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf)           '插入回车符,增加一段
            WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle           '加粗
            Dls = Dls + 1
            Xh = 1
        End If
        If Tx = "选择题" Then
            WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & "  (" & Cells(I, 8) & ")" & vbCrLf      '写题目及标准答案
            Dls = Dls + 1
            WordD.Paragraphs(Dls).Range.Text = "A、" & Cells(I, 4) & vbCrLf        '选项A
            Dls = Dls + 1
            WordD.Paragraphs(Dls).Range.Text = "B、" & Cells(I, 5) & vbCrLf        '选项B
            Dls = Dls + 1
            WordD.Paragraphs(Dls).Range.Text = "C、" & Cells(I, 6) & vbCrLf        '选项C
            Dls = Dls + 1
            If Len(Trim(Cells(I, 7))) > 0 Then
                WordD.Paragraphs(Dls).Range.Text = "D、" & Cells(I, 7) & vbCrLf        '选项D
                Dls = Dls + 1
            End If
            Xh = Xh + 1
        Else
            WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & "  (" & Cells(I, 8) & ")" & vbCrLf      '写题目及标准答案
            Dls = Dls + 1
            Xh = Xh + 1
        End If
    End If
Next I
Wordapp.WindowState = wdWindowStateMinimize      '最小化窗口
'Wordapp.ScreenUpdating = True             '屏幕刷新
'WordD.Close                             '
'Set WordD = Nothing
'Set Wordapp = Nothing
'Wordapp.Quit                        '退出Word对象

ThisWorkbook.Activate

End Sub
(End)
Categoría: VBA
Reimpreso en: https://www.cnblogs.com/ziheIT/p/8835158.html

Publicado 0 artículos originales · me gusta 0 · visitas 0

Supongo que te gusta

Origin blog.csdn.net/mxj16888/article/details/105563642
Recomendado
Clasificación