Страницы: 1
RSS
Замена изображений на название файлов
 
День добрый,



имеется файл в котором в ячейках таблицы изображения, в приложении пример
открыл файл архиватором

в папке:
xl\media
лежат изображения

image1.jpg
image2.jpg
image3.jpg
....
image8574.jpg

подскажите как заместо этих изображений в ячейках где они стоят разместить имена файлов
 
Цитата
SerEsenin написал: разместить имена файлов
Каких таких файлов. Где их взять? Может в примере и дорисуете, как должно быть в итоге.  
 
Присоединяюсь к вопросу автора темы
(как сопоставить картинки на листе с графическими файлами, создаваемыми при экспорте файла Excel в HTML)
Я так понимаю, что экспорт в HTML дает те же имена файлов, что и видны внутри XLSX в папке xl\media

Я пробовал найти соответствие - не нашел легких путей сопоставить картинки с файлами
(мне это надо для экспорта картинок с листа в исходном размере)
 
SerEsenin, попробуйте:
Код
Sub replaceimgtoname()

Set Shapes = ActiveSheet.Shapes
For Each s In Shapes
    With s
        If InStr(.Name, "Рисунок") Then
            Range(.TopLeftCell.Address, .TopLeftCell.Address) = "Image" & Split(.Name, " ")(1) & ".jpg"
            .Delete
        End If
    End With
Next

End Sub
Я склоняюсь к циклу For i = 1 To Shapes.Count, т.к. Image3.jpg может быть "Рисунок 4", но проблема может возникнуть, если на листе 2 идентичных рисунка с названиями например "Рисунок 5" и "Рисунок 25", а в контейнере файла он позиционирует как один image5.jpg. Я так понимаю, здесь необходимо считывать информацию с drawing#.xml
Изменено: Jungl - 09.08.2016 00:19:44
 
Jungl, неудачный у вас код (будут ошибки скорее всего)
имя графического объекта (Рисунок 1) не имеет никакого отношения к имени файла Image1

К тому же, имена файлов - уникальные, а имена графических объектов (Рисунок N) могут повторяться
К тому же, это сработает далеко не для всех рисунков...  If InStr(.Name, "Рисунок") Then
 
Цитата
Jungl написал:
Я так понимаю, здесь необходимо считывать информацию с drawing#.xml
Не совсем так,это только начало.
Надо  минимум 6 файлов xml связать по id, что бы выполнить задачу.
Начинать надо с книги
 
спасибо, сделал так:
Код
Sub reset_save_images()

    'reset
    Dim shape As Excel.shape

    For Each shape In ActiveSheet.Shapes
        With shape
            .ScaleHeight 1#, True, msoScaleFromTopLeft
            .ScaleWidth 1#, True, msoScaleFromTopLeft
        End With
    Next
    
    'save
    Dim li As Long, oObj As shape, wsSh As Worksheet, wsTmpSh As Worksheet
    Dim sImagesPath As String, sName As String
    
    sImagesPath = ActiveWorkbook.Path & "\images\" '"
    If Dir(sImagesPath, 16) = "" Then
        MkDir sImagesPath
    End If
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set wsSh = ActiveSheet
    Set wsTmpSh = ActiveWorkbook.Sheets.Add
    For Each oObj In wsSh.Shapes
        If oObj.Type = 13 Then
            li = li + 1
            oObj.Copy
            sName = "img" & li
            With wsTmpSh.ChartObjects.Add(0, 0, oObj.Width, oObj.Height).Chart
                .ChartArea.Border.LineStyle = 0
                .Paste
                .Export Filename:=sImagesPath & sName & ".jpg"
                .Parent.Delete
            End With
            oObj.TopLeftCell.Value = sName
            oObj.Delete
        End If
    Next oObj
    Set oObj = Nothing: Set wsSh = Nothing
    wsTmpSh.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Объекты сохранены в папке: " & sImagesPath, vbInformation
End Sub

 
Цитата
SerEsenin написал: сделал
честно списал с другого сайта :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
честно списал с другого сайта
с двух  :)  но задачу выполняет
Страницы: 1
Читают тему
Наверх