2017-02-06 5 views
3

Я застрял в кодировке команды за слово. Кнопка (в текстовом документе) должна вызвать диалог, чтобы указать имя файла для книги excel, затем скопировать именованный диапазон и вставить его обратно в слово как изображение. часть копирования и вставки довольно проста, но получение имени файла не работает для меня.изнутри слова, скопируйте и вставьте как изображение названный диапазон excel

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

Мой код до сих пор (пытался очистить его, насколько это возможно, там было много проб и ошибок)

Sub CRA_copy() 

Dim oXL As Excel.Application 
Dim oWB As Excel.Workbook 
Dim oSheet As Excel.Worksheet 
Dim oRng As Excel.Range 
Dim ExcelWasNotRunning As Boolean 
Dim WorkbookToWorkOn As String 
Dim dlgOpen As FileDialog 
Dim crabook As String 

oName = ActiveDocument.Name 

'If Excel is running, get a handle on it; otherwise start a new instance of Excel 
On Error Resume Next 
Set oXL = GetObject(, "Excel.Application") 

If Err Then 
    ExcelWasNotRunning = True 
    Set oXL = New Excel.Application 
End If 

On Error GoTo Err_Handler 

'Open the workbook  
crabook = Application.GetOpenFilename(_ 
     filefilter:="Excel Files (*.xl*), *.xl*", MultiSelect:=False) 

'Process each of the spreadsheets in the workbook 
oXL.ActiveWorkbook.Range("CRA").Copy 

If ExcelWasNotRunning Then 
    oXL.Quit 
End If 

oName.Activate 

Selection.EndKey Unit:=wdStory 
Document.InsertBreak Type:=wdPageBreak 

Selection.Paste 
'Make sure you release object references. 
Set oRng = Nothing 
Set oSheet = Nothing 
Set oWB = Nothing 
Set oXL = Nothing 

'quit 
Exit Sub 

Err_Handler: 
    MsgBox WorkbookToWorkOn & " caused a problem. " & Err.Description, vbCritical, _ 
    "Error: " & Err.Number 
If ExcelWasNotRunning Then 
    oXL.Quit 
End If 

End Sub 
+0

Вы только что изменили весь почтовый индекс? Я перевернул его на предыдущий пост, если этот вопрос ответил, затем отметьте как ответ. После этого откройте новое сообщение с новыми запросами и добавьте измененный код, иначе сообщение не будет закрыто здесь. –

+0

Предлагаю вам посетить тур, как задать вопросы и как получить ответы на ** SO **, справа здесь http://stackoverflow.com/tour –

+0

Действительно ли это сообщение? Похоже, он может вставить ссылку или форматированный текст, но не изображение. –

ответ

0

в Word VBA эквивалент в Excel Application.GetOpenFilename является Application.FileDialog.

Попробуйте код ниже:

Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker) 

' modify the FileDialog settings 
With dlgOpen 
    'Add a filter that includes .xl* (.xls, .xlsx, .xlsm) 
    .Filters.Add "Excel Files (*.xl*)", "*.xl*" 
    .AllowMultiSelect = False 
    .Show 

    crabook = .SelectedItems(1) 
End With 
Смежные вопросы