Berry - это диапазон нескольких ячеек из другого файла excel, а Melon - таблица слайдов PowerPoint. Я пытаюсь вставить Berry в таблицу ppt, сначала выбрав ячейку (3,2) в таблице ppt. Сделав это, я хотел бы отменить выбор. и выберите ячейку (3.7).Использование CommandBars.ExecuteMso проблемы
Следующий код успешно вставляет диапазон в таблицу с ячейкой (3,2) в верхнем левом углу.
Berry.Copy
Melon.Table.Cell(3, 2).Shape.Select
Lemon.CommandBars.ExecuteMso ("PasteExcelTableDestinationTableStyle")
Однако, когда я пытаюсь следующий код, диапазон получает вставить в таблицу с Cell (3,7) в верхнем левом углу. Я бы подумал, что диапазон будет вставлен в соответствии с предыдущим, а затем просто выберите ячейку (3,7) без вставки.
Berry.Copy
Melon.Table.Cell(3, 2).Shape.Select
Lemon.CommandBars.ExecuteMso ("PasteExcelTableDestinationTableStyle")
Melon.Table.Cell(3, 7).Shape.Select
Кажется, что код ExecuteMso всегда выполняется как последняя строка кода. Простите мой английский, и я благодарю вас за ваше время и помощь.
Ниже приведен полный код:
Sub Auto()
Application.CutCopyMode = False
Dim apple As Workbook
Dim grape As Workbook
Dim orange As Range
Dim Kiwi As Shape 'Shape
Dim Peach As Object
Dim Berry As Range
Dim pear As Range
Dim Lemon As PowerPoint.Application 'PPApp
Dim LemonJuice As PowerPoint.Presentation 'PPpres
Dim Melon As PowerPoint.Shape
Dim LCounter As Integer
Set grape = Workbooks.Open(Filename:="C:\Users\206521654\Documents\Automate vba\try.xlsx")
Set apple = Workbooks.Open(Filename:="C:\Users\206521654\Documents\Automate vba\Monthly Report\Msia\Weekly Channel Ranking Broken Out.xlsx")
Set orange = apple.Sheets("Periods").Range("A5:C25")
orange.Copy
grape.Sheets("Sheet1").Range("B3:D23").PasteSpecial xlPasteValues
grape.Sheets("Sheet1").Range("E3").Formula = "=D3/C3-1"
Set SourceRange = grape.Sheets("Sheet1").Range("E3")
Set fillRange = grape.Sheets("Sheet1").Range("E3:E23")
SourceRange.AutoFill Destination:=fillRange
grape.Sheets("Sheet1").Range("E3:E23").NumberFormat = "0%"
grape.Sheets("Sheet1").Range("B3:E23").Font.Name = "Calibri"
grape.Sheets("Sheet1").Range("B3:E23").Font.Size = "11"
grape.Sheets("Sheet1").Range("C3:D23").NumberFormat = "0.000"
For Each Cell In grape.Sheets("Sheet1").Range("E3:E23")
If Cell.Value < 0 Then
Cell.Font.Color = vbRed
Else:
Cell.Font.Color = vbBlue
End If
Next
Set Berry = grape.Sheets("Sheet1").Range("B3:E23")
Berry.Copy
Set Lemon = New PowerPoint.Application
Set LemonJuice = Lemon.Presentations.Open("C:\Users\206521654\Documents\Automate vba\Automate test.pptx")
Set Melon = LemonJuice.Slides(1).Shapes(8)
Melon.Table.Cell(3, 2).Shape.Select
Lemon.CommandBars.ExecuteMso "PasteExcelTableDestinationTableStyle"
Melon.Table.Cell(7, 2).Shape.Select
End Sub
Почему CommandBars.ExecuteMso выполняется в самом конце? – user7579065
Что происходит, когда вы выполняете каждую строку кода с помощью отладчика, проблема все еще возникает? –
Спасибо, что вернули мне Коди. Проблема не возникает, когда я запускаю отладчик! Это происходит, когда я запускаю вспомогательный элемент, используя зеленый треугольник:/Почему это так? Спасибо за вклад каждого. – user7579065