LibreOffice Macro library içinde Excel VBA kodu çalışmıyor

Makrolar ve Basic programlama dili özel bölümü

LibreOffice Macro library içinde Excel VBA kodu çalışmıyor

#2533 İleti | mert | 27 Ağu 2019, 12:08

Merhabalar,

Libreoffice Calc hücrelerini makro ile formatlamak için aşağıdaki VBA kodunu kullanıyorum.

Kod: Tümünü seç
Option VbaSupport 1
Sub hucreleri_formatla()
Selection.NumberFormat = "#.###,00;0;;;@"  'Sifirlari gizleyen duzgun sayi formati
End Sub


Ancak bu kodlara her dosyadan erişmek istiyorum. Yani her dosyaya tek tek bu kodu eklemek yerine Libreoffice MyMacros altındaki kütüphanelere(EKRAN GÖRÜNTÜSÜ EKLEDİM) ekleyerek her dosyadan erişmek uygun oluyor. Ancak bu alana eklediğim VBA kodları Option VBASupport 1 uyumluluk bildirimini girsem de hata veriyor. Her bir dosya içine ayrı ayrı eklersem çalışıyor.

MyMacros altındaki kütüphanelerde bu kodu çalıştırmak için bir yol var mıdır.
Bu kodun Libre Basic karşılığını araştırdım ancak bulamadım ve modifiye de edemedim.

Her iki türlü de yardım edebilecek arkadaşlara şimdiden teşekkür ederim.
mert
Eklentiler
Library.JPG
Library.JPG (31.85 KiB) 606 defa görüntülendi
mert
 
İleti: 3
Kayıt: 27 Ağu 2019, 11:54
İşletim Sisteminiz: windows7
LibreOffice Sürümü: LibreOffice

Re: LibreOffice Macro library içinde Excel VBA kodu çalışmıyor

#2539 İleti | Hamurcu | 09 Eyl 2019, 22:33

@mert,

LibreOffice ile MS Office %100 uyumlu değildir özellikle macro ve VB konusunda.

Yakın zamanda LİbreOffice Basic Programlama konusunda Türkçe içerikli dokümanlar hazırlayıp yayınlayacağım.

Forum'dan duyurusunu yaparım.

O zamana kadar çalıştırmak istediğin komutları yine forumda sorabilirsin elimden geldiğince destek olurum.

Ancak bir ricam olacak kesinlikle Excel'de şu kodu yazdım al bunu LibreOffice'e çevir gibi bir talep olmasın.

Temel algoritmalar ve komut farklılıklarını elbette anlatabilirim ama ondan ötesini sizin yapmanız gerekir.
Kullanıcı avatarı
Hamurcu
 
İleti: 186
Kayıt: 06 Ağu 2012, 00:14
Konum: İstanbul
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 6.x

Re: LibreOffice Macro library içinde Excel VBA kodu çalışmıyor

#2543 İleti | mert | 17 Eyl 2019, 16:46

Yanıtınız için teşekkür ederim.
Libreoffice makroları konusundaki örneklere gerçekten çok ihtiyaç var. Bu konuda çok yönlü örnekler yapabilirseniz
oldukça faydalı olur. Çünkü yurtdışı kaynaklarında bile güzel örnekler bulamıyorum.

Buraya verdiğim VBA örneğini çalıştıramayınca Libreoffice Calc makro kaydet yoluyla oluşturduğum kodu düzenleyerek aynı sonuca ulaşmaya çalıştım. ilginç olan kod bazen çalışıyor bazen çalışmıyor. Çalışmadığı zamanlar buna ne engel oluyor birisi hariç tespit edemedim. Dosya uzantısı .xls ise kod çalışmıyor. En azından öyle görünüyor, ods olarak kaydedince çalıştı. Yine de bazı zamanlar ods uzantılı dosyalarda da çalışmıyor. Çok ilginç!

Ancak buradaki gereklilik kodun dosya içinde(OPEN OFFICE FILE FORMAT = ods uzantısı içinde) saklanmaması, genel alan dizininde saklanarak çalıştırılması ihtiyacı var. Bu alanda da vba kodu uyumluluk bildirimi(option vbasupport 1) yazsanız da çalışmıyor.


Makro kaydet ile Libre Basic olarak oluşturduğum kodu aşağıda paylaşayım. Belki takılma sorunu çözülebilir ve ihtiyacı olan yararlanabilir.

Libreoffice Sürümüm 6

Kod: Tümünü seç
REM  *****  BASIC  *****
sub SIFIRSIZkurusluF
rem -------MAKRO KAYDET ILE YAPILDI KISMEN UZERINE KOD EKLENDI(oSel)-------------
rem define variables
dim document   as object
dim dispatcher as Object

dim oSel as object, oSheet as Object   'eklenen
rem ----------------------------------------------------------------------
rem get access to the document
oSheet=thiscomponent.getcurrentcontroller.activesheet     'aktif sayfayı oSheet değişkenine ata
oSel = ThisComponent.getCurrentSelection()   'seçili alanı oSel değişkenine ata
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = oSel ' Seçili alanı sözlük diziye ata (bu dizi nin özelliklerini bilmiyorum)


dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "NumberFormatValue"
args2(0).Value = 111        '"#.###,00;0;;;@" bu formatın karşılığı kod

dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args2())
end Sub

mert
 
İleti: 3
Kayıt: 27 Ağu 2019, 11:54
İşletim Sisteminiz: windows7
LibreOffice Sürümü: LibreOffice


Makrolar ve Basic

Kimler çevrimiçi

Kayıtlı kullanıcılar: Google [Bot], Yandex [Bot]

cron