Excel VBA Изображение нижнего колонтитула - PullRequest
1 голос
/ 29 марта 2012

Есть ли способ использовать код Excel-VBA для создания объекта изображения на листе, чтобы вставить его в качестве изображения нижнего колонтитула.Я попытался сделать это, создав объект диаграммы и вставив его в графический формат, а затем экспортировав диаграмму в файл изображения и установив изображение в качестве нижнего колонтитула.Есть ли лучший способ вставить объект изображения как изображение нижнего колонтитула, и если да, то как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Я запустил рекордер макросов. Я нажал Page Setup, затем Header/Footer, затем Custom Footer. Я нажал на центральную часть, а затем Format Picture (кнопка с изображением солнца над горами). Я просмотрел изображение и нажал Insert. «& [Picture]» появилось в центральной части. Я дважды щелкнул OK. Я выключил диктофон.

Я распечатал страницу, и выбранное изображение появилось внизу.

Важный код, сохраненный устройством записи макросов, был:

ActiveSheet.PageSetup.CenterFooterPicture.Filename = _
    "C:\Users\Public\Pictures\Sample Pictures\Desert Landscape.jpg"

Замените "C:\Users\Public\Pictures\Sample Pictures\Desert Landscape.jpg" именем файла по вашему выбору.

Макро-рекордер, как правило, является самым простым способом обнаружения таких утверждений.

1 голос
/ 13 июля 2015

Для тех, кто просматривает это в будущем, я поделюсь своим кодом, чтобы скопировать диапазон и сохранить его в виде файла на вашем компьютере, который затем можно будет добавить в нижний колонтитул. Вы можете удалить любые биты, которые вам не нужны =)

  Dim objPic As Shape
  Dim objChart As Chart
  Dim strTimeStamp As String
  Dim strFileDest As String

20    Sheets(2).Activate

30    Sheets(2).Columns("R:T").AutoFit
40    Sheets(2).Rows("17:21").AutoFit

50    ActiveWindow.DisplayGridlines = False
60    Call Sheets(2).Range("S17", "U21").CopyPicture(xlScreen, xlPicture)
70    ActiveWindow.DisplayGridlines = True

80    Sheets(2).Shapes.AddChart
90    Sheets(2).Activate
100   Sheets(2).Shapes.Item(1).Select

110   Set objChart = ActiveChart
120   ActiveChart.Parent.Name = "FooterChart"

  ' For some reason, Excel occasionally tries to make an actual chart out of these strings.
  ' It's just a nonsensical chart that messes the footer up but I'm having trouble duplicating the issue and figuring out what causes it.
  ' This should always work.  Don't use .Clear, it crashes.

130   ActiveChart.ChartArea.ClearContents

140   objChart.Paste
150   Selection.Name = "FooterImage"
160   ActiveSheet.ChartObjects("FooterChart").Activate

170   Sheets(2).Shapes.Item(1).Line.Visible = msoFalse
180   Sheets(2).Shapes.Item(1).Height = Range("S17", "U21").Height
190   Sheets(2).Shapes.Item(1).Width = Range("S17", "U21").Width
200   ActiveChart.Shapes.Range(Array("FooterImage")).Height = Range("S17", "U21").Height
210   ActiveChart.Shapes.Range(Array("FooterImage")).Width = Range("S17", "U21").Width

220   Sheets(2).Shapes.Item(1).Height = Sheets(2).Shapes.Item(1).Height * 1.25
230   Sheets(2).Shapes.Item(1).Width = Sheets(2).Shapes.Item(1).Width * 1.25
240   ActiveChart.Shapes.Range(Array("FooterImage")).Height = ActiveChart.Shapes.Range(Array("FooterImage")).Height * 1.2
250   ActiveChart.Shapes.Range(Array("FooterImage")).Width = ActiveChart.Shapes.Range(Array("FooterImage")).Width * 1.2

260   strTimeStamp = CStr(Format(Now(), "yyyymmddHhNnSs"))
270   strFileDest = "D:\Temp" & strTimeStamp & ".jpg"

280   objChart.Export strFileDest

290   InsertPicture strFileDest

300   If Len(Dir$(strFileDest)) > 0 Then
310       Kill strFileDest
320   End If

330   Sheets(2).Shapes.Item(1).Delete
1 голос
/ 01 октября 2014

Попробуйте это:

Dim ws as Worksheet
Set ws = Worksheets("YourWorksheetName")

With ws.PageSetup
   .CenterFooterPicture = "&G" 'Specifies that you want an image in your footer
   .CenterFooterPicture.Filename = "C:\Pictures\MyFooterImage.jpg" 'specifies the image file you want to use

End With

Код, сгенерированный устройством записи макросов, поможет вам в этом, но, как это часто бывает, не дает полного или наиболее подходящего решения. Также звучит так, будто вы пытаетесь вставить изображение, сгенерированное Excel (например, диаграмму), в нижний колонтитул? если это так, я полагаю, что вам придется сопоставить объект с изображением, а затем сослаться на этот файл изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...