Excel VBA: встроить файл в определенный столбец и перейти вниз на одну строку столбца, чтобы вставить другой - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать каталог в Excel, где пользователь сможет писать описание и вставлять файлы (pdf, Excel, PowerPoint) в лист Excel.Мне удалось сделать текстовый ввод от пользователя, чтобы перейти на одну строку вниз с каждой записью с помощью этого метода: shj.Range("B" & n + 1), но этот метод, похоже, не работает с вложенным файлом.Вот как выглядит лист imgur

Кто-нибудь может мне помочь с этим?Я пытаюсь сделать вставку файла в ячейку в столбце C и перейти на одну строку вниз, когда пользователь пытается вставить другой файл.

Private Sub CommandButton1_Click()
If Me.TextBox1.Value = "" Then
    MsgBox "Please enter the description", vbCritical
    Exit Sub
End If

Dim shj As Worksheet
worksheetName = ActiveSheet.Name
Set shj = ThisWorkbook.Sheets(worksheetName)
Dim n As Long

n = shj.Range("B" & Application.Rows.Count).End(xlUp).Row
shj.Range("B" & n + 1).Value = Me.TextBox1.Value

Dim FName As String

shj.Range("C" & n + 1).Select '<~ this doesn't seem to work
FName$ = Application.GetOpenFilename


ActiveSheet.OLEObjects.Add(Filename:=FName, _
Link:=True, _
DisplayAsIcon:=True, _
Height:=10).Select

 Unload Me

 End Sub

1 Ответ

0 голосов
/ 18 октября 2018

Поскольку вы не получаете никаких ошибок как таковых, я считаю, что код более или менее работает, но вы просто не заметили добавленные вами OLE-объекты.Откройте панель выбора и посмотрите ...

Нажмите в меню Домой , посмотрите под Редактирование группа , нажмите Найти и выбрать кнопку , а затем Панель выбора...

Вы должны увидеть список всех объектов с правой стороны.Держу пари, что там есть куча, если вы сохранили после тестирования.Выбрав их на панели , вы можете заметить, что все они расположены в верхнем левом углу ячейки A1 .


.это всего лишь случай потерянных / скрытых (не очень скрытых) объектов. Думаю, поможет следующий код:

Private Sub CommandButton1_Click()
    If Me.TextBox1.Value = vbNullString Then
        MsgBox "Please enter the description", vbCritical
        Exit Sub
    End If

    Dim shj As Worksheet
    Set shj = ActiveSheet

    Dim n As Long
    With shj
        n = .Range("B" & .Rows.Count).End(xlUp).Row
        .Range("B" & n + 1).Value = Me.TextBox1.Value

        Dim FName As String
        FName$ = Application.GetOpenFilename
        Dim OLE As OLEObject
        ' You need to set the Top/Left Position & Height/Width to put it where you want it
        Set OLE = .OLEObjects.Add(Filename:=FName, _
            Link:=True, _
            DisplayAsIcon:=True, _
            Top:=.Range("C" & n + 1).Top, _
            Left:=.Range("C" & n + 1).Left, _
            Height:=.Range("C" & n + 1).Height, _
            Width:=.Range("C" & n + 1).Width)
    End With
    Unload Me
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...