Изображения не перемещаются со столбцами (несмотря на то, что установлено «Переместить и размер с ячейками») - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь сохранить изображения в таблице рядом с таблицей, как только удаляю первые четыре столбца. Я установил для каждого из их свойств местоположения значение «Перемещение и размер с ячейками», однако они все еще не перемещаются, когда я выполняю вышеописанное программно (это работает, когда выполняется вручную)

В моей программе я сохраняю копию рабочей книги, вхожу в эту рабочую книгу и удаляю первые четыре столбца, а затем сохраняю эту рабочую книгу в формате html. К сожалению, когда я удаляю первые четыре столбца, фотографии никогда не движутся рядом с ними.

'Sets which sheets to search through and update
 sheetList = Array("CH01", "CH02", "CH03", "CH04", "CH05", "CH06", "CH07", 
 "CH08", "CH09")

 Application.ScreenUpdating = False

 'Saves and opens new workbook to process and convert to html. Workbook 
 name is skew number.xlsm

 ActiveWorkbook.SaveCopyAs _
 Filename:=ActiveWorkbook.Path & "\test.xlsm"

 Workbooks.Open (ActiveWorkbook.Path & "\test.xlsm")

 For sheetNum = LBound(sheetList) To UBound(sheetList)
     'sets sh to each sheet in sheetList
     Set sh = ActiveWorkbook.Sheets(sheetList(sheetNum))

     'Deletes first four rows of each sheet in sheetList (only way to 
      successfully hide columns once converted to html)
     sh.Columns(1).EntireColumn.Delete
     sh.Columns(1).EntireColumn.Delete
     sh.Columns(1).EntireColumn.Delete
     sh.Columns(1).EntireColumn.Delete
 Next

 Application.Wait (Now + TimeValue("0:01:00"))

 ActiveWorkbook.Save

 'Saves temp workbook as html
 ActiveWorkbook.SaveAs _
 Filename:=ActiveWorkbook.Path & "\test.html", _
 FileFormat:=xlHtml

 ActiveWorkbook.Close False

 Application.ScreenUpdating = True

Как видите, я даже заставил программу подождать минуту, чтобы дать фотографиям возможность обновить свою позицию. Я также удерживал экран от обновления до завершения всего процесса, что было единственным предложением, которое я нашел в другом потоке. Я также установил для каждого свойства изображения значение «xlMoveAndSize» в предыдущем фрагменте кода, и я уверен, что их предпочтения местоположения обновляются до этого.

1 Ответ

1 голос
/ 28 июня 2019

Попробуйте что-то вроде этого - активация каждого листа может привести к появлению фигур при удалении столбцов.

Dim sheetList, wbCopy As Workbook, copyName As String
Dim wbOrig As Workbook, shtName

'Sets which sheets to search through and update
sheetList = Array("CH01", "CH02", "CH03", "CH04", "CH05", _
                  "CH06", "CH07", "CH08", "CH09")

Set wbOrig = ActiveWorkbook
copyName = wbOrig.Path & "\test.xlsm"
wbOrig.SaveCopyAs Filename:=copyName

Set wbCopy = Workbooks.Open(copyName)
wbCopy.Activate

For Each shtName In sheetList
    With wbCopy.Sheets(shtName)
        .Activate
        DoEvents
        .Range("A1:D1").EntireColumn.Delete
        DoEvents
     End With
 Next

Application.Wait Now + TimeValue("0:00:10")

With wbCopy
    .Save
    .SaveAs Filename:=Replace(copyName, ".xlsm", ".html"), _
              FileFormat:=xlHtml
    .Close False
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...