2010-07-21 36 views
6

Tôi đang cố gắng để viết tài liệu OpenOffice của tôi (Writer trong trường hợp của tôi) để làm một số điều đơn giản với các vật dụng. Cụ thể là tôi muốn sao chép văn bản từ widget vào widget. Đối với điều này tôi muốn nhận được một thành phần và hơn là nhận được văn bản từ nó.Scripting OpenOffice Forms với VB hoặc python

Tôi đã cố gắng để làm sth như thế này:

document = ThisComponent.CurrentController.Frame 

oDocument  = ThisComponent 
oTextBoxFrom = document.getByName("Text Box 1") # 1 
oTextBoxFrom = oDocument.getByName("Text Box 1") # 2 

Cả phiên bản # 1 hay # 2 công việc. Trình biên dịch VB nhổ ra rằng "Hộp văn bản 1" không thể truy cập được, tuy nhiên tôi có thành phần đó trong biểu mẫu của tôi. Đoán của tôi là tôi đang cố gắng để có được thành phần này từ một nơi sai, ví dụ như. không phải là khung hình. Tôi chỉ không thể tìm ra cấu trúc của tài liệu là gì.

Điều này có vẻ là một nhiệm vụ khá dễ dàng, tuy nhiên tôi không thể tìm thấy bất kỳ đặc tả OpenOffice nào để truy cập các đối tượng OO UNO từ VB, hoặc python.

+0

Phiên bản OpenOffice hoặc LibreOffice nào sử dụng? –

Trả lời

1

Tôi không có kinh nghiệm với kịch bản openoffice nhưng tôi đã tìm thấy các ví dụ đó, lưu ý rằng họ không bao giờ sử dụng getByName trên chính tài liệu nhưng luôn ở trên một số phần của nó.

docCalc = ThisComponent 
maFeuille = docCalc.Sheets.getByName("leCSV") 
.... 
for f = 0 to lesFamilles.Count -1' chaque famille 
nomFam = lesFamilles.ElementNames(f) 
uneFamille = lesFamilles.getByName(nomFam) 
... 
monDocument.TextTables.hasByName("Finances") 
... 
lesSections = monDocument.TextSections 
sectA = lesSections.getByName("Aline") 

bạn có thể tìm phần còn lại trong pdf lớn này tại http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf, bằng tiếng Pháp nhưng mã là phổ eh? Hy vọng điều này sẽ giúp ..

2

Ngày tốt lành.

nếu bạn chọn sử dụng một VB, bạn phải biết điều này:

VBA: Khả năng tương thích giữa OpenOffice.org Basic và VBA liên quan đến các OpenOffice.org ngôn ngữ cơ bản cũng như các thư viện runtime. API OpenOffice.org và Trình chỉnh sửa hộp thoại không tương thích với VBA (tiêu chuẩn hóa các giao diện này sẽ làm cho nhiều khái niệm được cung cấp trong OpenOffice.org không thể).

nếu nó sẽ được python:

OpenOffice.org 3.1 tàu với các ngôn ngữ kịch bản Python, phiên bản 2.6.1 . Các tàu OpenOffice.org cũ hơn có phiên bản Python 2.3.4. Bản phân phối Python này đi kèm với mô-đun Uno, kết nối API UNO với ngôn ngữ kịch bản lệnh python. Để chạy phiên bản Python này trên Linux, bạn có thể truy cập trực tiếp vào OpenOffice.org PATH. Và như một sẽ mong đợi với bất kỳ phân phối của Python, OOo-Python có thể được chạy từ dòng lệnh là tốt. Nếu bạn đã có cài đặt riêng biệt Python 2.6, bạn có thể nhập mô-đun uno (cầu Python-UNO) vào nó bằng cách sử dụng các hướng dẫn này. Nếu bạn đã cài đặt phiên bản Python khác nhau trên Windows, bạn cũng có thể truy cập API UNO bằng cách sử dụng cầu nối COM thay vì cầu Python. Yêu cầu mô-đun pywin32 bổ sung để Python có thể nói chuyện với COM. Lưu ý rằng mặc dù API UNO là thống nhất, việc triển khai thực hiện bởi hai cầu hơi khác nhau, vì vậy cú pháp theo yêu cầu của mỗi cũng là đôi khi khác nhau.

Python UNO bridge

UPD: ooobloger có thể giúp bạn với sự hiểu biết về python và hội nhập uno.