2

Я работаю над командой Excel VBA, чтобы экспортировать несколько листов Excel в назначенный файл JPG.

У меня 16 листов в одной книге Excel, и было бы лучше экспортировать каждый лист в формате JPG.

У меня работает код ниже, чтобы пройти через все листы и создать 16 файлов JPG. Однако кажется, что Excel только захватывает рабочий лист, который активен. Скажем, если "Sheet1" активен, то все 16 файлов jpg будут отображать все, что находится внутри "Sheet1", и не отображать то, что находится на "Sheet2" или "Sheet3" и т.д.

Sub exportpic()

Dim WS As Worksheet, Inpt As Worksheet
Dim rgExp As Range
Dim CH As ChartObject

Set Inpt = Sheets("Input")
Set rgExp = Range("B5:M60")

    For Each WS In ThisWorkbook.Sheets
        If Not WS.Name = "Input" Then
            rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
            Set CH = WS.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, Width:=rgExp.Width, Height:=rgExp.Height)
            CH.Chart.ChartArea.Select
            CH.Chart.Paste
            CH.Chart.Export "C:\Users\User1\Desktop\Umbilical\" & WS.Name & ".jpg"
            CH.Delete

        End If
    Next WS

End Sub

Кто-нибудь может, пожалуйста, помочь мне, как правильно захватить / экспортировать каждый лист в назначенный файл JPG? По-настоящему ценю вашу помощь по вышеизложенному.

Большое спасибо заранее.

1 ответ1

0

Просто так этот вопрос не остается без ответа - нет ответов, проблема заключалась в определении rgExp не включая WS

Вместо изменения:

rgExp.CopyPicture to WS.Range("B5:M60").CopyPicture и вообще не использую переменную rgExp.

Вы бы изменили:

set rgExp = Range("B5:M60") чтобы set rgExp = WS.Range("B5:M60")

Это на тот случай, если вам нужно было использовать rgExp где-то еще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .