1

Я хочу взять диапазон A1:I26 на листе "Desc" и преобразовать его в HTML. Затем этот HTML-код отображается в ячейке H2 на листе «-Listings-».

Ячейки в диапазоне A1:I26 имеют график с форматированием, которое я хочу сохранить (т. Е. Стиль шрифта, цвет, макет). Я хочу, чтобы он включал значения текста, а не формулы за ним.

Вот скриншот того, что я делаю:

1 ответ1

2

Я нашел способ обойти это.  Вместо того чтобы использовать код VBA для преобразования выбранного диапазона в HTML, я пошел альтернативным путем, используя формулы и один единственный код VBA.

Первым делом я сделал Sheet5 , затем я взял необработанные данные HTML из таблицы, которую пытался реплицировать (отображение строк Desc!1:16 в столбцы Sheet5!A:K) и разделил это, вставив разрывы в код, где бы я вводил новую информацию. Я взял каждый кусок и вставил его в A2:K2 . Затем я взял информацию, которую я вручную изменил, и связал ее со своей книгой в A4:K4 . (Они используют ссылки на ячейки на моей странице журнала, которые меняются при каждом внесении в список).

В ячейку L2 я положил формулу

=CONCATENATE(A2,A4,B2,B4,C2," ",C4,D2," ",D4,E2," ",E4,F2," ",F4,
                         G2," ",G4,H2," ",H4,I2," ",I4,J2," ",J4,K2)

(разрыв строки только для презентации).  Это взяло каждый кусок необработанного HTML и информацию из моего журнала и объединило ее, показывая полный HTML-код. В ячейку C11 моего журнала я поместил =Sheet5!$L$2 чтобы показать данные HTML на моей главной странице, чтобы скопировать и вставить значение.

После этого я заметил, что Excel будет добавлять двойные кавычки ко всему, что уже цитировалось, и одинарные кавычки для других областей. После некоторого поиска я нашел некоторый код, который будет копировать значения выбранной ячейки, чтобы я мог вставить HTML-код без кавычек. Вот макрос, который я использовал для этого:

Sub CopyCellContents()
    Range("C11").Select
    'create a reference in the VBE to Microsft Forms 2.0 Lib
    Dim objData As New DataObject
    Dim strTemp As String
    strTemp = ActiveCell.Value
    objData.SetText (strTemp)
    objData.PutInClipboard
End Sub

Я использовал Pearson Software Consulting (т. Е. Chip Pearson) для макроса, используя сайт буфера обмена Windows In VBA .

Я столкнулся с проблемой пользовательских данных.  Чтобы решить эту проблему, мне пришлось выйти из отладчика кода, снова открыть модуль с макросом, перейти в «Инструменты» → «Ссылки», а затем просмотреть и ввести FM20.DLL в «Имя файла:».  В противном случае я не смог бы найти «Библиотеку объектов Microsoft Forms 2.0» в доступных ссылках.

Я назначил это кнопке рядом с ячейкой C11 , и теперь, когда я нажимаю на нее, код копируется в мой буфер обмена без кавычек. Это не работает так, как я планировал изначально, но результат - именно то, что я хотел. Надеюсь, это поможет некоторым другим.

Вот несколько скриншотов того, что я сделал:

Вот где мне нужен код для каждого списка.  Sheet5 - это необработанные данные, разбитые на ячейки.

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

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