Начну чуть издалека... Со временем собралась довольно обширная библиотека аудио и просто электронных книг. Как-то захотелось навести в ней порядок и создать что-то вроде картотеки. Попробовав несколько специализированных программ так ничего для себя и не подобрал чтобы полностью устраивало. В итоге вернулся к родному MS Excel) Так вот и подобрался к сути) В одном из столбцов я решил вставлять ссылку на оригинал обложки книги и уменьшенную копию в примечание к ячейке. Поискал на форуме что-то похожее... нашел пару тем... вроде получилось почти все. [vba]
Код
Sub AddImage() Dim ImaFile$ Dim w, ww As Long Dim h, hh As Long 'считываем путь к файлу картинки If Selection.Cells.Count > 1 Then Exit Sub With Application.FileDialog(msoFileDialogFilePicker) .Show If .SelectedItems.Count = 0 Then Exit Sub ImaFile = .SelectedItems(1) End With
w = LoadPicture(ImaFile).Width 'размер h = LoadPicture(ImaFile).Height If h / w > w / h Then ww = 2 hh = h / w * 3.8 Else ww = 2 hh = w / h * 3.8 End If
On Error GoTo nexterr ActiveCell.ClearComments With ActiveCell.AddComment.Shape 'заливаем картинку .Fill.UserPicture (ImaFile) .ScaleWidth ww, msoFalse, msoScaleFromTopLeft .ScaleHeight hh, msoFalse, msoScaleFromTopLeft 'корректируем размер End With ActiveCell.FormulaR1C1 = "ГИПЕРССЫЛКА(" & """" & ImaFile & """" & ";" & """" & "Cover" & """" & ")" Exit Sub nexterr: MsgBox "Можно выбирать только изображения!", vbCritical, "Ошибка" ActiveCell.ClearComments
End Sub
[/vba] Основная проблема у меня возникла с этой строчкой ActiveCell.FormulaR1C1 = "ГИПЕРССЫЛКА(" & """" & ImaFile & """" & ";" & """" & "Cover" & """" & ")" Если добавляю знак "равно" ( ActiveCell.FormulaR1C1 = "=ГИПЕРССЫЛКА(" ... ), то код перестает работать (выбивает ошибку). В другом своем "проекте" использовал такой же синтаксис и все было нормально. Там тоже макросом вставлялась в ячейку формула. Помогите пожалуйста найти ошибку. Файлик прикрепить не могу, т.к. не проходит по лимиту 100 Кб Вот на него ссылка из моего облака картотека.rar
P.S. буду рад предложениям по улучшению "Картотеки"
Начну чуть издалека... Со временем собралась довольно обширная библиотека аудио и просто электронных книг. Как-то захотелось навести в ней порядок и создать что-то вроде картотеки. Попробовав несколько специализированных программ так ничего для себя и не подобрал чтобы полностью устраивало. В итоге вернулся к родному MS Excel) Так вот и подобрался к сути) В одном из столбцов я решил вставлять ссылку на оригинал обложки книги и уменьшенную копию в примечание к ячейке. Поискал на форуме что-то похожее... нашел пару тем... вроде получилось почти все. [vba]
Код
Sub AddImage() Dim ImaFile$ Dim w, ww As Long Dim h, hh As Long 'считываем путь к файлу картинки If Selection.Cells.Count > 1 Then Exit Sub With Application.FileDialog(msoFileDialogFilePicker) .Show If .SelectedItems.Count = 0 Then Exit Sub ImaFile = .SelectedItems(1) End With
w = LoadPicture(ImaFile).Width 'размер h = LoadPicture(ImaFile).Height If h / w > w / h Then ww = 2 hh = h / w * 3.8 Else ww = 2 hh = w / h * 3.8 End If
On Error GoTo nexterr ActiveCell.ClearComments With ActiveCell.AddComment.Shape 'заливаем картинку .Fill.UserPicture (ImaFile) .ScaleWidth ww, msoFalse, msoScaleFromTopLeft .ScaleHeight hh, msoFalse, msoScaleFromTopLeft 'корректируем размер End With ActiveCell.FormulaR1C1 = "ГИПЕРССЫЛКА(" & """" & ImaFile & """" & ";" & """" & "Cover" & """" & ")" Exit Sub nexterr: MsgBox "Можно выбирать только изображения!", vbCritical, "Ошибка" ActiveCell.ClearComments
End Sub
[/vba] Основная проблема у меня возникла с этой строчкой ActiveCell.FormulaR1C1 = "ГИПЕРССЫЛКА(" & """" & ImaFile & """" & ";" & """" & "Cover" & """" & ")" Если добавляю знак "равно" ( ActiveCell.FormulaR1C1 = "=ГИПЕРССЫЛКА(" ... ), то код перестает работать (выбивает ошибку). В другом своем "проекте" использовал такой же синтаксис и все было нормально. Там тоже макросом вставлялась в ячейку формула. Помогите пожалуйста найти ошибку. Файлик прикрепить не могу, т.к. не проходит по лимиту 100 Кб Вот на него ссылка из моего облака картотека.rar
P.S. буду рад предложениям по улучшению "Картотеки" MrFrai1992
Sub AddImage() Dim ImaFile$ Dim w, ww As Long Dim h, hh As Long Dim wsAct As Worksheet, rCellAct As Range 'считываем путь к файлу картинки If Selection.Cells.Count > 1 Then Exit Sub With Application.FileDialog(msoFileDialogFilePicker) .Show If .SelectedItems.Count = 0 Then Exit Sub ImaFile = .SelectedItems(1) End With
w = LoadPicture(ImaFile).Width 'размер h = LoadPicture(ImaFile).Height If h / w > w / h Then ww = 2 hh = h / w * 3.8 Else ww = 2 hh = w / h * 3.8 End If
On Error GoTo nexterr Set wsAct = ThisWorkbook.ActiveSheet Set rCellAct = ActiveCell rCellAct.ClearComments With rCellAct.AddComment.Shape 'заливаем картинку .Fill.UserPicture (ImaFile) .ScaleWidth ww, msoFalse, msoScaleFromTopLeft .ScaleHeight hh, msoFalse, msoScaleFromTopLeft 'корректируем размер End With wsAct.Hyperlinks.Add rCellAct, ImaFile, , , "Cover" Exit Sub nexterr: MsgBox "Можно выбирать только изображения!", vbCritical, "Ошибка" ActiveCell.ClearComments
End Sub
[/vba]
Добрый день! Попробуйте так
[vba]
Код
Sub AddImage() Dim ImaFile$ Dim w, ww As Long Dim h, hh As Long Dim wsAct As Worksheet, rCellAct As Range 'считываем путь к файлу картинки If Selection.Cells.Count > 1 Then Exit Sub With Application.FileDialog(msoFileDialogFilePicker) .Show If .SelectedItems.Count = 0 Then Exit Sub ImaFile = .SelectedItems(1) End With
w = LoadPicture(ImaFile).Width 'размер h = LoadPicture(ImaFile).Height If h / w > w / h Then ww = 2 hh = h / w * 3.8 Else ww = 2 hh = w / h * 3.8 End If
On Error GoTo nexterr Set wsAct = ThisWorkbook.ActiveSheet Set rCellAct = ActiveCell rCellAct.ClearComments With rCellAct.AddComment.Shape 'заливаем картинку .Fill.UserPicture (ImaFile) .ScaleWidth ww, msoFalse, msoScaleFromTopLeft .ScaleHeight hh, msoFalse, msoScaleFromTopLeft 'корректируем размер End With wsAct.Hyperlinks.Add rCellAct, ImaFile, , , "Cover" Exit Sub nexterr: MsgBox "Можно выбирать только изображения!", vbCritical, "Ошибка" ActiveCell.ClearComments