Как открыть файл CSV через скрипт VBA в Powerpoint PPTM

У меня сложная презентация Powerpoint, которая в итоге экспортируется в виде отдельных слайдов через ISpringPro

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

Я пытаюсь написать сценарий VBA, чтобы позволить глобальный поиск и замену всех гиперссылок в PowerPoint.

Моя версия прототипа отлично работает, когда вы вводите один URL-адрес в поле ввода и второй URL-адрес во втором поле ввода для поиска и замены. Но я хотел бы просто прочитать всю эту информацию из файла CSV с двумя столбцами и посмотреть, как она выглядит в целом.

Теперь у меня проблемы с тем, чтобы VBA открывал файл CSV с помощью ADODB Connection. Я думаю, что я мог бы пропустить ссылку, но VBA действительно не моя сильная сторона.

Я вставил код ниже. но это взрывается на Set cn = New ADODB.Connection говоря, что он не знает, что это за тип.

Я пропускаю какую-то ссылку на сборку?

With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .Show

    Dim csvPath As String
    Dim csvFolder As String

    csvPath = .SelectedItems(1)
    csvFolder = StripFilename(csvPath)


    Dim cn As Object
    Dim rs As Object
    Dim strsql As String
    Dim col As Integer

    strsql = "SELECT OLDURL,NEWURL FROM " & csvPath


    Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer

    Set cn = New ADODB.Connection
    'On Error Resume Next
    cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "Dbq=" & strFolder & ";" & _
        "Extensions=csv,tab,txt;"
    'On Error GoTo 0
    If cn.State <> adStateOpen Then Exit Sub
    Set rs = New ADODB.Recordset
    'On Error Resume Next
    rs.Open strsql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
    'On Error GoTo 0
    If rs.State <> adStateOpen Then
        cn.Close
        Set cn = Nothing
        Exit Sub
    End If


Dim iRet As Integer

    For f = 0 To rs.Fields.Count - 1
        iRet = MsgBox(rs.Fields(f).Name)
    Next f

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing



End With

1 ответ

Решение

Сотрите это.

Мне нужно было запустить Power Point от имени администратора, а затем в редакторе макросов перейти к

Инструменты> Рекомендации>

и добавьте ссылку на последнюю библиотеку объектов данных Microsoft ActiveX.

Другие вопросы по тегам