2016-02-17 4 views
1

У меня есть база данных деталей, и мы использовали функцию вложения Access 2010 для присоединения PDF-файлов к каждому номеру детали. У меня есть какой-то рабочий код, который сделал то, что я искал, чтобы запросить данный список частей и сохранить только прикрепленные файлы PDF в папку. Теперь я изменил столбец [PDF] на столбец гиперссылки, потому что я был обеспокоен тем, что в конечном итоге превысил лимит 3 ГБ.Сохранение гиперссылок в папку vba

Есть ли способ, которым я могу изменить этот код для работы с полем гиперссылки вместо поля типа вложения?

Конечной целью здесь является создание компакт-диска со всеми документами части (PDF) для наших клиентов.

Private Sub Command32_Click() 
'this creates a folder for me 
If Dir([filePath] & [newFolder], vbDirectory) = "" Then 
MkDir [filePath] & [newFolder] 
Else 

MsgBox ("Folder:" & " " & [newFolder] & " " & "already Exists") 
Exit Sub 
End If 

'code to loop through present list and save attached files to the new folder 

Dim db As DAO.Database 
Dim rsParent As DAO.Recordset2 
Dim rsChild As DAO.Recordset2 

Set db = CurrentDb 
Set rsParent = Me.Recordset 

With rsParent 
.MoveFirst 'This ensures that regardless of your current record, the loop will start with the first record 

Do While Not .EOF 

Set rsChild = rsParent.Fields("pdf").Value 

    With rsChild 
    Do While Not .EOF 
     If rsChild.RecordCount <> 0 Then 
      rsChild.OpenRecordset 
      rsChild.Fields("FileData").SaveToFile ([filePath] & [newFolder]) 
      Me.Refresh 
      .MoveNext 
    Else 
     .MoveNext 
    End If 
    Loop 
    End With 

.MoveNext 
Loop 
End With 
Exit_SaveImage: 

Exit Sub 
' error stuff 
Err_SaveImage: 
If Err = 3839 Then 
    MsgBox ("All Done") 
    Resume Next 
Else 
    MsgBox "There's been an error!", Err.Number, Err.DESCRIPTION 
    Resume Exit_SaveImage 
End If 
End Sub 

ответ

0

Предполагая, что поле, содержащее ваш URL файла называется FileURL, изменение

rsChild.Fields("FileData").SaveToFile ([filePath] & [newFolder]) 

к

Filecopy rsChild.Fields("FileURL"), [filePath] & [newFolder] 

Примечание: Вместо Hyperlink, определите FileURL поле как нормальная строка содержащий полное имя файла.

Надеется, что это помогает

+0

я попробовать то, что вы предложили. я заменил строку вышеприведенного кода и указал, что поле, содержащее гиперссылку, теперь называется doc_attachment и устанавливается как столбец гиперссылки в таблице подчёркивания. теперь, когда я запускаю код, я получаю сообщение об ошибке «Set rsChild = rsParent.Field (« Doc_Attachment »). Значение« объект »поддерживает это свойство или метод – wes

+0

1) Вы говорите, что ваше поле« doc_attachment »содержит вашу гиперссылку. Пожалуйста, прочитайте мое предыдущее примечание. 2) Вы не можете определить набор записей (rsChild) как гиперссылку! Pls отредактируйте свой вопрос с помощью определения таблицы. – Cisco