首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想使用excel中的vba在word中将页面方向设置为横向

我想使用excel中的vba在word中将页面方向设置为横向
EN

Stack Overflow用户
提问于 2020-07-18 07:31:32
回答 1查看 303关注 0票数 0

我想这将是一个简单的解决方案,但我找不到方法……

在这个新的word文档中,我想将方向设置为横向,但显然我不想手动设置它,所以当我使用.PageSetUp或.Orientation语法时,它们会给我一个错误。

我尝试使用With.WordApp.PageSetUp.Orientation = xlLandscape或wdLandscape,但是我不能。

因此,有一种方法可以打开一个新的word文档,并自动将方向设置为横向,然后将所选内容从excel粘贴到该页面。在这个新文档中,我尝试设置页边距,同样的大小写。.LeftMargin = CentimetersToPoints(1),但出现错误。

代码语言:javascript
运行
复制
Option Explicit
Sub Imprimir()
    
Dim WordApp As Object
Dim f, ff As Date
Dim s, qty As Integer
Dim NoEncontrado As Boolean
Dim doc As Documents

Sheets("Entrega").Select
f = Sheets("Entrega").Range("D1").Value
qty = 1
s = 35
NoEncontrado = True
    Do While NoEncontrado = True
    
        Do While qty < 30
            Sheets("Concentrado").Select
            Cells(s, 7).Select
            ff = Sheets("Concentrado").Cells(s, 7).Value
                
                If f = ff Then
                Sheets("Concentrado").Select
                Sheets("Concentrado").Cells(s, 3).EntireRow.Select
                selection.Copy
                Sheets("Entrega").Select
                ActiveSheet.Range("A4").Select
                selection.PasteSpecial Paste:=xlPasteValues
                qty = qty + 1
                s = s - 1
                Rows("4:4").Select
                selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                                
                Else
                qty = qty + 1
                s = s - 1
                
                End If
        Loop
        
        NoEncontrado = False
    Loop

Set WordApp = CreateObject("Word.Application")
Sheets("Entrega").Select
ActiveSheet.Range("G1").Select
Range("D3:S35").Select
selection.Copy
MsgBox (" Entrega de guardia del día " & f & " lista para imprimir"), vbInformation
With WordApp 'Con este codigo se abrira Word y se creara un documento nuevo
.Visible = True
.Activate
.Documents.Add
End With

WordApp.selection.PasteSpecial link:=True 'Se pegara en el documento lo seleccionado en la hoja de calculo
selection.pagesetup.Orientation = wdOrientLandscape
Set WordApp = Nothing
Sheets("Entrega").Select
Range("A4:CA34").Select
selection.ClearContents
End Sub
EN

回答 1

Stack Overflow用户

发布于 2020-07-18 08:26:14

如果你把手指从键盘上移开,向后靠,试着理解发生了什么,你就可以自己解决这个问题。考虑一下Selection对象。

您选择的内容是屏幕上显示的内容的一部分。在屏幕上你可以看到一个窗口。即使您在屏幕上看到多个窗口,也只能有一个窗口处于活动状态。并且只有活动的才能有选择。记住此连接: Window ->应用程序-> Document -> Selection。由于在任何窗口中不能有多个应用程序,因此也不能在Word和Excel中同时选择。创建一个,你就会失去另一个。

选择对象是用户需要的,但VBA不需要。Workbooks("MyWorkbook").Sheet1.Range("A1:B3")使VBA能够找到您所说的确切范围。您可以读取它的任何单元格的值或更改它,指定字体或颜色-对它执行任何您想要的操作,包括复制到剪贴板。然后观察:用户的Selection对象是VBA的Range对象。切勿选择任何内容,除非您想要将其显示给用户。

将对象赋值给命名变量总是很好的做法。当您使用多个应用程序时,它是一个必须使用的。请记住,Word中的范围与Excel中的范围不同。您需要将它们分别声明为Excel.RangeWord.Range。VBA不会要求你做出这样的区分,并且大多数时候都会正确地使用你的变量。如果你依赖它,你的代码在大多数情况下都会像这样工作。而且,顺便说一下,Dim f, ff As Date声明了f As Variant (默认情况下,因为没有提到任何内容),而且只声明了ff As Date。我建议每行只有一个声明。

Orientation是什么属性?它是Word.Document的属性(不是文档--正如您的代码中的复数)。更准确地说,它是文档的PageSetup对象的属性。因此就有了Doc.PageSetup.Orientation。想想看: PageSetup对象怎么可能是任何Selection的属性?Selection是一个可视化的Range。它不能有方向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62963019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档