powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Акес и ОpenOffice
25 сообщений из 74, страница 2 из 3
Акес и ОpenOffice
    #34675126
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
меня счас особо интересует удаление, копирование , вставка строк (массива ячеек)
передаче в файл (скажем так) массива значений , как это возможно в эксель


и вообще , где можно почитать про те параметры и функции , которые используют , желательно на русском.
а то частные применения показывают, а хочется самому разобраться.
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34675461
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На, разбирайся. Для начала, думаю, хватит.

На русском ничего подобного не встречал. Найдешь - не забудь поделится.
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34675625
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё раз спасибо
буду разбираться.
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34676110
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут по-русски , правда для С++, но по аналогии можно

http://www.realcoding.net/article/view/2663
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34676217
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все у меня есть, уже переписано под VB...
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34676259
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%?*?%Это все у меня есть, уже переписано под VB...

ну так скинь, сэкономь мне время.....

а вордовские прибамбасы?
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34677387
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как заменить такую конструкцию

Код: plaintext
       d = .Range("строка").row

получить номер строки по имени
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34677397
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может можно что-то подключить в референсах, чтоб можно смотреть свойства и методы объектов?
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34677508
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа как заменить такую конструкцию

Код: plaintext
       d = .Range("строка").row

получить номер строки по имени

Код: plaintext
.getCellRangeByName("строка").getCellAddress().Row
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34678083
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PA
а где ты об этом прочитал?
я тоже хочу !!!!
в инете куча примеров по использованию, но я не могу найти с описанием эти методов
иначе мне по каждой строке спрашивать придётся!!!!
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34678158
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя2PA
а где ты об этом прочитал?
я тоже хочу !!!!
в инете куча примеров по использованию, но я не могу найти с описанием эти методов
иначе мне по каждой строке спрашивать придётся!!!!
Developer's Guide
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34678248
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вот в том же порядке, что в той статье, что ты привел.

Создание экземпляра OpenOffice.org

Код: plaintext
1.
   Set oSOffice = CreateObject("com.sun.star.ServiceManager")
   Set oDesk = oSOffice.createinstance("com.sun.star.frame.Desktop")

Создание или открытие документа

Код: plaintext
1.
   Set oFile = oDesk.loadComponentFromURL("private:factory/scalc", "_blank",  0 , vArg())
   Set oSheets = oFile.getSheets()
Вставка нового листа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   oSheets.InsertNewByName strMySheetName,  0 

   If oSheets.Count >  1  Then 
      Do While oSheets.Count >  1 
         Set oSheet = oSheets.getByIndex(oSheets.Count -  1 )
         oSheets.RemoveByName (oSheet.Name)
      Loop
   End If

   Set oSheet = oFile.getSheets().getByName(strNomeRelat)
   Set oControl = oFile.getCurrentController()
   oControl.setActiveSheet oSheet

   oSheet.SetPropertyValue "CharFontName", "Arial"
   oSheet.SetPropertyValue "CharHeight",  10 
Запись данных в ячейку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   Set objCel = oSheet.getCellByPosition(MyCol,MyRow)

   Select Case TypeName(MyText)
   Case "String"
      If Left(MyText,  1 ) = "=" Then 
         objCel.setFormula MyText
      Else
         objCel.setString MyText
      End If
   Case "Double", "Integer", "Long"
      objCel.SetValue MyText
   End Select
Чтение данных из ячейки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   Set objCel = oSheet.getCellByPosition(MyCol,MyRow)
   oType = objCel.getType()
   Select Case oType
   Case  1 
      MyValue = objCel.getValue()
   Case  2 
      MyValue = objCel.getString()
   Case  3 
      MyValue = objCel.getFormula()
   End Select
Установка ширины строки, столбца

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   Set oRow = oSheet.GetRows().getByIndex(intRow)
      oRow.Width = varSize
или
      oRow.optimalHeight = True 'Autofit


   Set oCol = oSheet.getColumns().getByIndex(intCol)
      oCol.Width = varSize
или
      oCol.optimalWidth = True 'Autofit
Форматирование ячеек

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
   Set oRange = oSheet.getCellRangeByName(strRange)

   Dim oServiceManager As Object
   Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
   Dim oLocale As Object
   Set oLocale = oServiceManager.bridge_getstruct("com.sun.star.lang.Locale")
   Dim oFormats As Object
   Set oFormats = oFile.getNumberFormats()
   Dim lngFormatNum As Integer
   lngFormatNum = oFormats.queryKey(strNewFormat, oLocale, True) 
  If (lngFormatNum = - 1 ) Then 
    lngFormatNum = oFormats.AddNew(strNewFormat, oLocale)
    If (lngFormatNum = - 1 ) Then lngFormatNum =  0 
  End If
  
   oRange.NumberFormat = lngFormatNum

      objCel.SetPropertyValue "CharFontName", strFonte
      objCel.SetPropertyValue "CharHeight", intTamanho
 
      Select Case intAlignment
         Case  1 : objCel.SetPropertyValue "ParaAdjust",  0   'Left
         Case  2 : objCel.SetPropertyValue "ParaAdjust",  1   'Right
         Case  3 : objCel.SetPropertyValue "ParaAdjust",  2   'Justify Word Wrap
         Case  4 : objCel.SetPropertyValue "ParaAdjust",  3  'Center
      End Select

   objCel.SetPropertyValue "ShrinkToFit", True
   objCel.SetPropertyValue "IsTextWrapped", True

слияние

Код: plaintext
1.
2.
3.
   Dim oRange As Object
   Set oRange = oSheet.getCellRangeByName(strRange)
   oRange.Merge (True)
   oRange.ParaAdjust = intParaAdjust
границы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
   Dim oRange As Object
   Set oRange = oSheet.getCellRangeByName(strRange)
   Dim oTableBorder As Object
   Set oTableBorder = oSheet.TableBorder
    
   Dim oTBorder As Object
   Set oTBorder = oTableBorder.TopLine
   oTBorder.Color = lngColor
   oTBorder.OuterLineWidth = intLineWidth
   oTableBorder.TopLine = oTBorder
    
   Dim oBBorder As Object
   Set oBBorder = oTableBorder.BottomLine
   oBBorder.Color = lngColor
   oBBorder.OuterLineWidth = intLineWidth
   oTableBorder.BottomLine = oBBorder
    
   Dim oLBorder As Object
   Set oLBorder = oTableBorder.LeftLine
   oLBorder.Color = lngColor
   oLBorder.OuterLineWidth = intLineWidth
   oTableBorder.LeftLine = oLBorder
    
   Dim oRBorder As Object
   Set oRBorder = oTableBorder.RightLine
   oRBorder.Color = lngColor
   oRBorder.OuterLineWidth = intLineWidth
   oTableBorder.RightLine = oRBorder
    
   oTableBorder.IsTopLineValid = True
   oTableBorder.IsBottomLineValid = True
   oTableBorder.IsLeftLineValid = True
   oTableBorder.IsRightLineValid = True
    
   oRange.SetPropertyValue "TableBorder", oTableBorder

Печать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
   Dim oFamilies As Object   'Families Styles
   Dim oPageStyles As Object 'Page Styles
   Dim oPageStyle As Object  'Page Style in use
   Dim sNomesEstilos         'Style Names
   Dim oHeader As Object     'Header
   Dim oFooter As Object     'Footer
   Dim intCont As Integer    'Counter
    
   'Select Default Style
   Set oFamilies = oFile.getStyleFamilies()
   Set oPageStyles = oFamilies.getByName("PageStyles")
   If oPageStyles.hasByName("Default") = False Then 'There's no Default Style, so make it
      Set oPageStyle = oFile.createinstance("com.sun.star.style.PageStyle")
      oPageStyles.insertByName "Padrão", oPageStyle
   Else 'Default style exists, so select it to changes
      sNomesEstilos = oPageStyles.getElementNames()
      For intCont = LBound(sNomesEstilos) To UBound(sNomesEstilos)
         If sNomesEstilos(intCont) = "Default" Then
            Exit For
         End If
      Next intCont
      Set oPageStyle = oPageStyles.getByName(sNomesEstilos(intCont))
   End If
   oPageStyle.LeftMargin =  2000 
   oPageStyle.RightMargin =  500 
   oPageStyle.TopMargin =  1000 
   oPageStyle.BottomMargin =  1000 
    
   'Enable Header and Footer
   oPageStyle.HeaderIsOn = True
   oPageStyle.FooterIsOn = True
    
   'Header inicialization
   Set oHeader = oPageStyle.RightPageHeaderContent
    
   'Set Header botton border
   Dim oHBBorder As Object
   Set oHBBorder = oPageStyle.HeaderBottomBorder
   oHBBorder.Color = vbBlack
   oHBBorder.OuterLineWidth =  100 
   oPageStyle.HeaderBottomBorder = oHBBorder
    
   'Set Left Header
   oHeader.LeftText.String = "RC Software" 'Your program name
   oHeader.LeftText.Text.CharFontName = "Arial"
   oHeader.LeftText.Text.CharHeight =  8 
    
   'Set Center Header
   oHeader.CenterText.String = "Usuário: " & strLogin 'Logged user name
   oHeader.CenterText.Text.CharFontName = "Arial"
   oHeader.CenterText.Text.CharHeight =  8 
    
   'Set Right Header
   Dim oFieldPageNumber As Object 'Field Page Number
   Dim oFieldPageCount As Object  'Field Page Numbers
   Dim oHRText As Object          'Header Right Text to insert the field
   Dim oHRCursor As Object        'Header Right Cursor to insert the field
   Set oFieldPageNumber = oFile.createinstance("com.sun.star.text.TextField.PageNumber")
   Set oFieldPageCount = oFile.createinstance("com.sun.star.text.TextField.PageCount")
   Set oHRText = oHeader.RightText
   Set oHRCursor = oHRText.CreateTextCursor()
   oHeader.RightText.Text.CharFontName = "Arial"
   oHeader.RightText.Text.CharHeight =  8 
   oHRText.insertstring oHRCursor, "Fls.:", False
   oHRText.insertTextContent oHRCursor, oFieldPageNumber, False
   oHRText.insertstring oHRCursor, "/", False
   oHRText.insertTextContent oHRCursor, oFieldPageCount, False
      
   'Insert all Header informations into sheet
   oPageStyle.RightPageHeaderContent = oHeader

   'Footer initialization
   Set oFooter = oPageStyle.RightpageFooterContent
    
   'Set Top Footer border
   Dim oFTBorder As Object
   Set oFTBorder = oPageStyle.FooterTopBorder
   oFTBorder.Color = vbBlack
   oFTBorder.OuterLineWidth =  100 
   oPageStyle.FooterTopBorder = oFTBorder
    
   'Set Left Footer
   oFooter.LeftText.String = "Gerado em " & Format(Now, "dd/mm/yyyy - hh:mm:ss")
   oFooter.LeftText.Text.CharFontName = "Arial"
   oFooter.LeftText.Text.CharHeight =  8 
    
   'Set Center Footer
   oFooter.CenterText.String = "Rodapé Centro"
   oFooter.CenterText.Text.CharFontName = "Arial"
   oFooter.CenterText.Text.CharHeight =  8 
    
   'Set Right Footer
   Dim oFieldFileName As Object  'Field File Name
   Dim oFRText As Object         'Footer Right Text to insert a field
   Dim oFRCursor As Object       'Footer Right Cursor to insert a field
   Set oFRText = oFooter.RightText
   Set oFRCursor = oFRText.CreateTextCursor()
   Set oFieldFileName = oFile.createinstance("com.sun.star.text.TextField.FileName")
   oFieldFileName.SetPropertyValue "FileFormat",  0  'File name with path
   oFRText.insertstring oFRCursor, "Arq.:", False
   oFRText.insertTextContent oFRCursor, oFieldFileName, False
   oFooter.RightText.Text.CharFontName = "Arial"
   oFooter.RightText.Text.CharHeight =  8 
    
   'Insert all Footer informations into sheet
   oPageStyle.RightpageFooterContent = oFooter

   oPageStyle.isLandscape = False
   oControl.ShowGrid = False
   oFile.print(vArg)
Сохранение документа, закрытие докумета и офиса

Код: plaintext
1.
2.
3.
4.
5.
6.
Set Args( 0 ) = oServ.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Args( 0 ).Name = "FilterName"
Args( 0 ).Value = "MS Excel 97"
 
Doc.StoreToURL "file:///C:/MyReport.xls", Args
Doc.Close (True)
Doc.Terminate()
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34679014
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такое не катит

.getCellRangeByName("строка").getCellAddress().Row
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34679242
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели нельзя использовать раннее связывание ?
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34679362
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему нельзя? Сделай ActiveX и связывай. В SDK есть пример.
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34679546
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
взято из sdk

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim objServiceManager As Object
Dim objDesktop As Object
Dim objDocument As Object
Dim objEventListener As Object
Set objServiceManager = CreateObject("com.sun.star.ServiceManager")
Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
'Open a new empty writer document
Dim args()
Set objDocument = objDesktop.loadComponentFromURL("private:factory/swriter", "_blank",  0 , args)
'create the event listener ActiveX component
Set objEventListener = CreateObject("VBasicEventListener.VBEventListener") ---активикс не може открыть обект
'register the listener with the document
objDocument.addEventListener objEventListener

чё у меня не правильно?
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34680206
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты скомпилировал VBasicEventListener.dll?

Попробуй со стандартным из оффиса:

Library SO_ACTIVEXLib
C:\Program Files\OpenOffice.org 2.2\program\so_activex.dll
so_activex 1.0 Type Library

Sub addEventListener(xListener As Object)

С учетом вот этого -

Вопрос:
By using OOo ActiveX component (so_activex.dll) it seems possible to
embed OOo. The problem is that very few methods and properties are
exposed and there is a lack of documentation about API on how interact
with the component.

Ответ:
There is no type library and the IDispatch::GetTypeInfo is not supported
as well. That is, you need dynamically invoke methods.
For C++ this means calle GetIDsOfNames before every Invoke
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34680306
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТы скомпилировал VBasicEventListener.dll?

гы-гы-гы
чем, из чего...

автор
Library SO_ACTIVEXLib
C:\Program Files\OpenOffice.org 2.2\program\so_activex.dll
so_activex 1.0 Type Library

в референсах подключил...

всё равно ничего не получается

я фигею от информации., особенно для VBA.
скачал SDK, и ничего, чтоб заработало...
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34680369
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчем, из чего...

Тогда - ГЫ! - раз 30...

Информации нет и не будет. Все своими ручками и своей головой. dll-ку скомпилированную - из примера - я конечно могу выложить, но проку тебе от нее не будет.
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34680395
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Set ExlDb = CreateObject("com.sun.star.ServiceManager")
Set Desktop = ExlDb.createInstance("com.sun.star.frame.Desktop")
Set Document1 = Desktop.loadComponentFromURL("file:///C:/NL/накл2.xls", "_blank", 0, OpenParams())
Set WrkSht = Document1.CurrentController.ActiveSheet
Set oSheets = Document1.getSheets()
Set oSheet = oSheets.getByIndex(0)
With WrkSht

.getCellRangeByName("грузоотп.... работает
.GetRows.removeByIndex 20, 6 работает
d= .getCellRangeByName("строка").getCellAddress().Row - это уже не тянет

а как и где можно узнать методы и свойства?
в родных MS точку ставишь и список смотри,
точку остановки поставил и можно посмотреть ещё кучу инфы.
а тут вселепую тыкаешься....
ну есть ведь кто-то, ведь делают наверное. ААААААААААА!!!!!!!!!!
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34680672
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяd= .getCellRangeByName("строка").getCellAddress().Row - это уже не тянет

Специально проверил, всё работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Dim OpenParams()
    
    Set ExlDb = CreateObject("com.sun.star.ServiceManager")
    Set Desktop = ExlDb.createInstance("com.sun.star.frame.Desktop")
    Set Document1 = Desktop.loadComponentFromURL("file:///C:/test.xls", "_blank",  0 , OpenParams)
    Set WrkSht = Document1.CurrentController.ActiveSheet
    With WrkSht
        MsgBox "Номер строки - " & .getCellRangeByName("грузоотправитель").getCellAddress().Row +  1 
    End With
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34681022
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PA
большущее спасибо!!!
у меня тоже заработало, только на другой машине.
это уже проще (наверное) найти несколько отличий....
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34682831
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё-таки придётся в режиме ворос-ответ познавать openoffice.

как организовать копрование вставка ячеек?

такое не проходит


Код: plaintext
1.
2.
3.
' move the selected range to new position
oSheet.moveRange( oAddress, oRange ) 
' copy the selected range to new position
oSheet.copyRange( oAddress, oRange ) 
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34684574
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как копировать и вставлять ?
ничего не могу найти

тут для фокспро
http://forum.foxclub.ru/read.php?29,275276
но как переделать на VBA?
...
Рейтинг: 0 / 0
Акес и ОpenOffice
    #34685802
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну кто-нить может помочь?????
ведь так хорошо должно получиться с бесплатным 2007 рантаймом да если ещё sql2005 использовать...
...
Рейтинг: 0 / 0
25 сообщений из 74, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Акес и ОpenOffice
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]