#vba #excel #macros
#vba #excel #макросы
Вопрос:
Я работал изо всех сил, отчаянно пытаясь собрать огромный макрос для своей работы из того, что я могу найти в Интернете. Цель состоит в том, чтобы форматировать отчеты, в конечном счете.
Эта часть кода принимает значение из ячейки и находит файл изображения с соответствующим именем в заданной папке, затем «вставляет» изображение в определенную ячейку. (Я знаю, что технически это не вставляется, но все же.)
Проблема в том, что другим людям нужно просматривать эти отчеты, но изображения не отображаются, когда я отправляю им рабочую книгу. Я понятия не имею, как это исправить, и это очень важно. УМОЛЯЮ ВАС, пожалуйста, помогите мне найти способ сделать это, чтобы другие сотрудники могли видеть изображения! От этого может зависеть моя работа! 🙁
Dim pictureNameColumn As String
Dim picturePasteColumn As String
Dim pictureName As String
Dim lastPictureRow As Long
Dim pictureRow As Long
Dim pathForPicture As String
pictureNameColumn = "A"
picturePasteColumn = "B"
pictureRow = 4
lastPictureRow = Cells(Rows.Count, pictureNameColumn).End(xlUp).Row
pathForPicture = "C:Usersdesidreportimages"
Do While (pictureRow <= lastPictureRow)
pictureName = Cells(pictureRow, "A")
If (pictureName <> vbNullString) Then
If (Dir(pathForPicture amp; pictureName amp; ".jpg") <> vbNullString) Then
Cells(pictureRow, picturePasteColumn).Select
ActiveSheet.Pictures.Insert(pathForPicture amp; pictureName amp; ".jpg").Select
With Selection
.Left = Cells(pictureRow, picturePasteColumn).Left 30
.Top = Cells(pictureRow, picturePasteColumn).Top 3
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Height = 90#
.ShapeRange.Width = 90#
.ShapeRange.Rotation = 0#
End With
Комментарии:
1. Есть ли у них доступ к пути
"C:Usersdesidreportimages"
? Это может быть причиной проблемы. Кроме того, ваш код кажется неполным, в нем отсутствуют некоторыеEnd If
и конец вашегоDo While
2. О! Я надеялся, что путь не будет иметь значения, как это не имеет значения, когда я вставляю изображение вручную. Полагаю, я мог бы загрузить все фотографии во внешний источник и связать их таким образом, но я надеялся, что это можно как-то встроить с помощью макроса
3. Возможно, я неправильно понял вашу проблему. У вас есть этот макрос, выполняющий действия, а затем вы сохраняете свой файл и отправляете его коллегам? Или если они должны сами запускать макрос?
4. Они запускают макрос, а затем отправляют его другим. Я отредактировал макрос / рабочую книгу для каждого из них, чтобы путь шел к их папке с изображениями на их компьютере. Большое спасибо за помощь.
5. Кажется, я не могу найти внешнее место для загрузки, которое сохранит имена файлов, или я бы с удовольствием пошел на это.
Ответ №1:
Вместо вставки изображения с ActiveSheet.Pictures.Insert
помощью, попробуйте внедрить его с помощью этого метода. Также обратите внимание, что Cells не принимает буквы в качестве имен столбцов, для этого требуются номера столбцов, чтобы «A» стало 1:
Dim repPic as Shape
Dim pictureNameColumn As Long
Dim picturePasteColumn As Long
Dim Lft as Single
Dim Tp as Single
Dim Wdth as Single
Dim Hgth as Single
pictureNameColumn = 1
picturePasteColumn = 2
Lft = Cells(pictureRow, picturePasteColumn).Left 30
Tp = Cells(pictureRow, picturePasteColumn).Top 3
Wdth = Cells(pictureRow, picturePasteColumn).Width
Hgth = Cells(pictureRow, picturePasteColumn).Height
Set repPic = Application.ActiveSheet.Shapes.AddPicture(pathForPicture amp; pictureName amp; ".jpg", False, True, Lft,Tp,Wdth,Hgth)
Это позволит вам сохранить изображения в самом файле. Вам нужно будет выяснить, как определить размер изображения с помощью wdth и hgth, потому что с помощью этого метода вам нужно указать ширину и высоту в момент вставки изображения. Мое предлагаемое решение содержится в коде, но оно может не работать для вашей установки.
Надеюсь, это поможет, и если это так, пожалуйста, отметьте ответ как принятый. Удачи!
Ответ №2:
Если людям приходится запускать макрос, то в этом и заключается проблема: вернется If (Dir(pathForPicture amp; pictureName amp; ".jpg") <> vbNullString)
False
, если путь к файлу недоступен. Попробуйте найти общую папку для размещения ваших изображений. У меня нет решения вашей проблемы, но, по крайней мере, теперь вы знаете, откуда берется проблема.
Комментарии:
1. Спасибо! Да, я понял, что именно здесь возникла проблема. Я надеялся найти способ исправить проблему с помощью какого-либо другого способа встраивания