Sub CopyTable2Excel()
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSht As Excel.Worksheet
Dim oTbl As table
Dim oSelect As Selection
Dim lCols As Long
Dim lRows As Long
Dim sValue As String
Dim iLastRow As Integer
Dim iLastColumn As Integer
Dim varReturnMsgBox As Variant
'check for selection of the table first
If Not Selection.Information(wdWithInTable) Then
varReturnMsgBox = MsgBox(vbOKOnly, vbApplicationModal, "Error", Nothing, "Please Select table to convert into excel") = vbOK
Exit Sub
End If
'get reference to excel
Set oExcel = CreateObject("Excel.Application")
'create New book
Set oBook = oExcel.Workbooks.Add
'create New sheet
Set oSht = oBook.Sheets.Add
'make excel visible
oExcel.Visible = True
'get reference to first selected table
Set oTbl = Selection.Tables(1)
'and to selection
Set oSelect = Selection
lRows = 1
With oTbl
Do While lRows <= .Rows.Count
lCols = 1
Do While lCols <= .Columns.Count
oTbl.Cell(lRows, lCols).Select
sValue = Selection.Text
'filter on chr(13) and more
sValue = Left(sValue, InStr(sValue, Chr(13)) - 1)
oSht.Cells(lRows, lCols).Value = sValue
lCols = lCols + 1
Loop
lRows = lRows + 1
Loop
End With
'restore original selection
oSelect.Select
'destroy all references and free memory
Set oSelect = Nothing
Set oTbl = Nothing
Set oSht = Nothing
Set oBook = Nothing
Set oExcel = Nothing
End Sub
Word macro
Дело в том что с VB столкнулся первый раз в жизни. На С# реализацию макросов я не нашел так что теперь придется химичить. Подскажите в какую сторону копать про макросы.
На первый взгляд кажется, что нужно находить выделенную пользователем таблицу, как-то парсить значения столбцов забивать их в массивы, а потом создавать эксел документ и вбивать туда данные. С объектной моделью excel-я, как мне кажется ничего сложного нет, но вот сам макрос и парсинг таблицы... Нагуглить ничего толкового не получилось. Подскажите куда копать и может быть есть более простой способ реализации данного вопроса?
Просто создать объектную переменную той таблицы, и вставить новую таблицу в документ, пользуясь объектной переменной.
(Привел бы код, но именно сейчас не имею возможности проверить)
Цитата: SkyM@n
(Привел бы код, но именно сейчас не имею возможности проверить)
Было бы очень не плохо:) Если конечно будет возможность...
Цитата: koval
Было бы очень не плохо:)
Просто это... на линуксе нет MS Office...
Настраиваю виртальную машину специально для ВБА/Бейсика.
Код:
Работает вроде бы неплохо, хотя иногда возникает:
Цитата:
Run-time error 50290 Application-definded or object-definded error
Возник такой вопрос как поменять цвет всей талицы в Excel?
З.Ы. Пишу все это дело в стандартном вордовском Бэйсике.
koval,
Цитата: SkyM@n
koval,
http://forum.codenet.ru/announcement.php?f=13
См. в самом низу - там как раз для новичков в VBA. :)
http://forum.codenet.ru/announcement.php?f=13
См. в самом низу - там как раз для новичков в VBA. :)
Сплошное читерство:D
И в продолжение темы(да бы не создавать новую) как средствами VBA получить список всех системных шрифтов
в реестре можно глянуть, апишками. Можно тупо прочитать содержимое папки FONTS