Teknologi perpaduan antara Delphi dan Word
1. Arti kode VBA
Microsoft Word adalah lingkungan terintegrasi dan sistem pengolah kata dari Microsoft Corporation di Amerika Serikat. Namun, ini bukan hanya sistem pengolah kata. Ini mengintegrasikan Microsoft Visual Basic dan dapat memperluas fungsi Word melalui pemrograman.
Kode Microsoft Visual Basic di Word adalah makro Word. Dengan menulis makro Word, Anda dapat mewujudkan otomatisasi beberapa pemrosesan dokumen, seperti pencadangan otomatis dan penyimpanan dokumen, dll., yang dapat memperluas fungsi dokumen Word. Oleh karena itu, Anda dapat memanfaatkan sepenuhnya Fitur Word bahkan menjadikan Word sebagai bagian dari perangkat lunaknya sendiri.
Makro Word memiliki beberapa manfaat, karena dapat membantu kita mengotomatiskan dokumen, tetapi makro Word tidak sepenuhnya bermanfaat. Terkadang makro tersebut dapat membahayakan dokumen, sistem komputer, dan bahkan jaringan kita, dimulai dengan virus makro Taiwan NO1. Virus makro Melissa saat ini telah hilang. prompt sederhana di awal yang menguras sumber daya sistem hingga mengirim email acak, mengirim informasi pribadi ke jaringan, dan bahkan ke Autoexec.bat (file batch otomatis) di hard disk. -y, menghancurkan seluruh sistem Windows.
2. Teknologi Com yang tertanam di Word
Dapat dikatakan bahwa Word adalah perangkat lunak dengan dukungan terbaik untuk teknologi COM. Tampaknya agak terlalu ekstrem untuk mengatakan ini, tetapi teknologi antarmuka pemrograman canggih yang disediakan oleh Word memungkinkan kita mengontrol bagian mana pun dari Word melalui program. Baik itu membuka, menyimpan, mencetak, atau menggambar tabel dalam dokumen secara otomatis.
Melalui perangkat lunak pemrograman, Anda dapat memanipulasi kata secara fleksibel. Di sini kami hanya mengambil Borland Delphi sebagai contoh untuk dijelaskan secara detail:
1. Bagaimana memanggil perangkat lunak/file Word di Delphi
Ada tiga cara untuk memanggil perangkat lunak Word di Word:
. Menanamkan Word melalui kontrol Delphi TOleContainer
a.Gunakan kontrol Server yang disediakan oleh Delphi untuk memanggil Word dan menggunakan properti Word
b.Melalui teknologi Com nyata, impor semua perpustakaan kelas dalam file MSWORD9.OLB di direktori perangkat lunak Office ke Delphi, dan gunakan teknologi Com untuk memprogram
c.Gunakan CreateOleObject untuk memulai Word, lalu kendalikan Word dalam mode Ole.
2. Penilaian kesulitan beberapa metode
a. Sematkan Word melalui kontrol Delphi TOleContainer
Ini adalah penyematan Ole yang paling sederhana, yang dapat langsung memanggil dokumen Word. Anda hanya perlu menggunakan ToleContainer.Run untuk memulai dokumen Word secara langsung. Dan dokumen Word yang dimulai dengan cara ini terintegrasi dengan program Delphi (dari sudut pandang antarmuka), tetapi memiliki kekurangan yang tidak dapat diatasi, yaitu dokumen Word tidak dapat dikontrol melalui Delphi, dan tujuan memanipulasi Word secara fleksibel tidak dapat dilakukan. dicapai.
b.Gunakan kontrol Server yang disediakan oleh Delphi untuk memanggil Word dan menggunakan properti Word
Gunakan kontrol Server Delphi untuk mengontrol Word. Delphi dapat mengimplementasikan perintah kode selama pemrograman. Secara umum, ini dapat lebih mewujudkan kontrol Delphi terhadap Word. Namun, masih ada beberapa fungsi Word yang tidak dapat dipanggil di Delphi (seperti VBA yang ditulis sendiri ). Dan jika fungsi tersebut awalnya opsional dalam kode VBA, parameter harus ditambahkan saat memanggil Delphi, jika tidak, kompilasi pun tidak akan berhasil. Program Word dan Delphi yang dimulai dengan cara ini masing-masing memiliki dua bentuk. Cara ini hanya bisa dijadikan acuan saja.
c. Gunakan teknologi Com nyata untuk mengimpor semua perpustakaan kelas dalam file MSWORD9.OLB di direktori perangkat lunak Office ke Delphi, gunakan teknologi Com untuk memprogram, gunakan teknologi Com nyata untuk mengimpor perpustakaan kelas file MsWord9.OLD, dan kemudian gunakan Com teknologi untuk penggunaan program. Secara keseluruhan, ini mirip dengan menggunakan kontrol Server Delphi. Ini sedikit lebih merepotkan daripada kontrol Server. Kelebihan dan kekurangannya sama dengan kontrol Server.
d.Gunakan CreateOleObject untuk memulai Word, lalu kendalikan Word dalam mode Ole.
Metode ini menggunakan metode CreateOleObjects untuk memanggil Word, yang sebenarnya adalah Ole, tetapi metode ini benar-benar dapat mengontrol sepenuhnya file Word dan menggunakan semua properti Word, termasuk kode makro VBA yang Anda tulis sendiri.
Dibandingkan dengan kontrol Server dan teknologi COM, metode ini benar-benar dapat menggunakan berbagai properti Word. Pada dasarnya sama dengan menulis kode Anda sendiri di VBA, dan tidak perlu menggunakan kode default. Program Word dan Delphi yang dimulai dengan cara ini masing-masing memiliki dua bentuk. Kerugiannya adalah tidak ada prompt kode Delphi saat menggunakan metode ini. Semua penanganan pengecualian perlu ditulis sendiri, dan mungkin ada lebih banyak pengetahuan eksplorasi saat menulis.
3. Editor Makro Kata
Word benar-benar dapat mengedit kode VBA dan menulis formulir dan fungsi.
Cara masuk ke editor makro Word: Alat->Makro->Editor Visual Basic untuk masuk ke antarmuka editor Visual Basic. Antarmuka editor Visual Basic di Word pada dasarnya sama dengan editor Visual Basic yang sebenarnya dan tidak akan dijelaskan secara rinci di sini. Dalam kode VBA, Anda dapat menambahkan formulir pengguna, modul, dan modul kelas. Konsep form pengguna, modul, dan modul kelas sama persis dengan yang ada di Visual Basic. Komentarnya juga sama persis dengan di Visual Basic.
Anda dapat menempatkan kursor pada subrutin apa pun dari formulir atau modul dan langsung menekan "F5" untuk menjalankan subrutin saat ini.
4. Ikhtisar makro Word
Word sepenuhnya menggabungkan pengeditan dokumen dan VB untuk benar-benar mengotomatisasi dokumen. Pemrograman menggunakan Word mirip dengan menggunakan Visual Basic, perbedaannya adalah di Word, Anda dapat langsung menjalankan subrutin tertentu dan melihat langsung hasilnya. Makro Word hanya dapat diinterpretasikan dan dijalankan, sedangkan Visual Basic kini dapat ditulis ke dalam program nyata. Dari perspektif perlindungan kode, jumlah kode VBA di Word harus dikurangi sebanyak mungkin, terutama kode kunci.
Makro VBA dapat dibagi menjadi empat jenis:
1. Makro dengan nama yang sama dengan perintahnya
Seperti FileSave, FileOpen, jika kode VBA berisi fungsi dengan nama yang sama dengan Word, maka kode VBA tersebut akan langsung dijalankan, mengabaikan perintah dari Word itu sendiri.
2. Makro khusus di Word
Makro ini mencakup AutoExec (memulai Word atau memuat templat global), AutoNew (setiap kali dokumen baru dibuat), AutoOpen (setiap kali dokumen yang ada dibuka), AutoClose (setiap kali dokumen ditutup), AutoExit (keluar dari Word atau membongkar templat global) jam).
Jika kode VBA berisi fungsi dengan nama ini, kode terkait akan dieksekusi secara otomatis jika kondisi terkait terpenuhi.
3. Makro VBA untuk acara terkait
Makro ini adalah makro yang dipicu oleh kejadian. Misalnya, Document_Close memicu kejadian saat dokumen ditutup, Document_New terpicu saat dokumen baru dibuat, dan Document_Open terpicu saat dokumen dibuka.
4. Makro mandiri
Kode VBA yang Anda tulis sendiri, yaitu kode VBA yang tidak termasuk dalam situasi di atas, dapat dipanggil dengan kode VBA lain, dan yang lebih penting, dapat dipanggil oleh program lain.
Dengan cara ini, kita dapat membuang makro yang dijalankan secara otomatis oleh Word dan langsung memanggil makro terkait melalui Delphi untuk mencapai tujuan.
[b]5. Penjelasan rinci tentang makro perintah Word[/b]
Word sendiri berisi banyak fungsi perintah, namun baik bantuan online Word maupun bantuan MSDN tidak memberikan pengenalan apa pun tentang aspek ini, jadi Anda hanya dapat menjelajahinya melalui eksperimen Anda sendiri. Fungsi yang awalnya dieksplorasi adalah sebagai berikut:
Komentar penjelasan nama makro
FileBaru Baru
FileNewDefault membuat dokumen kosong baru
FileSaveAs Simpan sebagai
FileBuka terbuka
FileTutupTutup
Cetak FilePRint
Pratinjau cetak FilePrintPreview
Alat Sesuaikan Kustomisasi di toolbar
Opsi alat ToolsOptions
AlatRevisi Soroti revisi
ToolsReviewRevisions Menerima atau menolak revisi
ToolsRevisionMarksAccept Menerima revisi
ToolsRevisionMarksReject Tolak revisi
AlatRevisionMarksToggle Revisi
Alat Makro Makro
ToolsRecordMacroToggle Rekam makro baru
Lihat Keamanan Keamanan
ViewVBCode Melihat lingkungan editor VB
Templat dan add-on FileTemplates
ToolsProtectUnprotectDocument Membuka proteksi dokumen
Sisipkan Hyperlink Sisipkan hyperlink
EditHyperlink Edit hyperlink
DeleteHyperlink Hapus hyperlink
EditLinks Melihat dan menghapus tautan
EditPasteAsHyperlink Tempel hyperlink
Gaya FormatGaya
Edit penanda BookMark
Beberapa kode yang digunakan di OleWord
1. Program Delphi memulai Word
Gunakan metode CreateOleObjects untuk memulai Word dan memanggil kode VBA. Proses implementasi spesifiknya adalah:
Pertama gunakan GetActiveOleObject('Word.application') untuk menentukan apakah ada program Word di memori saat ini. Jika ada, sambungkan langsung. Jika tidak ada program Word, gunakan CreateOleObject('Word.Application') untuk memulai Word.
2. Program Delphi untuk membuat dokumen Word baru
Format: WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Templat: Nama templat yang akan digunakan,
NewTemplate: Tipe dokumen baru, True mewakili template, False mewakili dokumen
DocumentType: Jenis dokumen, defaultnya adalah dokumen kosong
Terlihat: Apakah jendela yang diselamatkan terlihat
Contoh: Doc_Handle:=Word_Ole.Documents.Add(Template:='C:/Temlate.dot',NewTemplate:=False);
3. Program Delphi membuka dokumen Word
Format: WordDocuments.Open(NamaFile,KonfirmasiKonversi,ReadOnly,PassWordDocument,
Templat Kata Sandi,Revent,WritePasswordDocument,WritePassWordTemplate,
Format, Pengkodean, Terlihat)
Nama File: Nama dokumen (termasuk jalur)
Konfirmasi konversi: Apakah akan menampilkan kotak dialog konversi file
ReadOnly: Apakah akan membuka dokumen dalam mode read-only
AddToRecentFiles: Apakah akan menambahkan file ke daftar file yang baru-baru ini digunakan di bagian bawah menu File
PassWordDocument: Kata sandi diperlukan untuk membuka dokumen ini
PasswordTemplate: Kata sandi yang diperlukan untuk membuka template ini
Revert: Jika dokumen sudah ada, apakah akan dibuka kembali
WritePasswordDocument: Kata sandi diperlukan untuk menyimpan perubahan pada dokumen
WritePasswordTemplate: Menyimpan kata sandi yang diperlukan untuk melakukan perubahan pada template
Format: Konverter file diperlukan untuk membuka dokumen
Pengkodean: Halaman kode dokumen yang digunakan
Terlihat: Apakah jendela yang membuka dokumen terlihat
Contoh:
Doc_Handle:=Word_Ole.Documents.open(NamaFile:=Doc_File,ReadOnly:=False,
AddToRecentFiles:=Salah);
4. Program Delphi untuk menyimpan dokumen Word
Format: WordDocuments.SaveAs (Nama File, Format File, LockComments, Kata Sandi,
AddToRecentFiles, WritePassword, ReadOnlyRecommended,
SematkanTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
SimpanSebagaiAOCESurat)
Nama File: Nama file. Defaultnya adalah nama folder dan file saat ini.
FileFormat Format penyimpanan dokumen.
LockComments Jika Benar, hanya komentar yang diperbolehkan pada dokumen ini.
Kata Sandi Kata sandi saat membuka dokumen.
AddToRecentFiles Jika Benar, menambahkan dokumen ke daftar dokumen yang baru-baru ini digunakan di menu File.
WritePassword Menyimpan kata sandi yang diperlukan untuk membuat perubahan pada dokumen.
ReadOnlyRecommended Jika Benar, Word akan merekomendasikan mode read-only setiap kali dokumen dibuka.
EmbedTrueTypeFonts Jika Benar, simpan dokumen dengan font TrueType.
SaveNativePictureFormat Jika Benar, grafik yang diimpor dari platform sistem lain (seperti Macintosh) hanya menyimpan versi Windows-nya.
SaveFormsData Jika Benar, data yang dimasukkan oleh pengguna dalam formulir disimpan sebagai catatan data.
SaveAsAOCELetter Jika dokumen berisi lampiran, jika properti ini Benar, simpan dokumen sebagai surat AOCEL (dan simpan emailnya).
Contoh:
Word_Ole.Documents.SaveAs(NamaFile:=Doc_File,FileFormat=wdFormatDocument,
AddToRecentFiles=Salah);
5. Membaca file dari database ke hard disk lokal dan membaca file dari hard disk lokal ke database.
Gunakan bidang biner Gambar untuk menyimpan di database dan gunakan metode Stream.
Buat aliran file:
Word_FileStream:=TFileStream.Create(Target_Name,fmOpenWrite atau fmCreate);
Word_FileStream.Posisi:=0;
Bidang gambar disimpan ke database:
TBlobField(AdoQuery1.FieldByName(Column_Name)).SaveToStream(Word_FileStream);
Membaca file dari database ke hard disk lokal:
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream);
Lepaskan aliran file:
Word_FileStream.Gratis;
6. Pengertian pesan global
Karena program Word dan Delphi merupakan dua perangkat lunak, maka sulit untuk berkomunikasi satu sama lain, sehingga digunakan metode pesan global. Pesan global harus didaftarkan terlebih dahulu, dan Windows mengembalikan nomor pesan menganggur sistem. Ketika pesan yang terdaftar sama, sistem Windows mengembalikan nilai yang sama, sehingga memastikan bahwa nomor pesan ini digunakan untuk berkomunikasi antara dua program.
Cara mendefinisikan pesan:
szMessageString: pchar = 'XIDIAN_11_Batu';
FMyJoinMessage := DaftarWindowMessage(szMessageString);
Cara mengirim pesan:
SendMessage (pegangan pihak lain, pesan, pesan dilengkapi dengan variabel pendek, pesan dilengkapi dengan variabel panjang)
7. Bagaimana program Delphi menerima pesan
Ada dua jenis pesan yang diterima oleh Delphi, yang pertama adalah membebani pesan tertentu, dan yang lainnya adalah membebani fungsi WndProc dan memilih pesan yang sesuai untuk diproses.
Metode 1 hanya dapat memproses satu pesan dalam satu waktu, sedangkan Metode 2 dapat memproses beberapa pesan sekaligus.
Untuk metode kedua, pernyataannya adalah sebagai berikut:
procedure WndProc(var Pesan: Tmessage);override
Perlu dicatat bahwa saat menggunakannya, Anda harus mewarisi fungsi WndProc(Pesan) setelah memproses pesan Anda sendiri, jika tidak, sistem akan crash!
8. Pembuatan kotak dialog Kombo secara dinamis dan acara Perubahan di Word
Buat modul kelas Comboander dan tentukan acara secara internal
Publik Dengan Acara ComboBoxEvent Sebagai Office.CommandBarComboBox
Modul yang mendefinisikan peristiwa yang dihasilkan oleh kontrol Kombo
Redupkan ctlComboBoxHandler Sebagai ComboBoxHandler Baru
Hasilkan kotak dialog Kombo
Setel Cbo_ChooseDoc = CommandBars("Menu Ditambahkan").Controls.Add(Tipe:=msoControlComboBox, Sementara:=True)
Atur pegangan file untuk menghasilkan acara Combo_Change
Setel ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc
Setelah event dihasilkan, pilih event Ubah ComboBoxEvent di modul kelas Combohander untuk menulis kode event
Sub ComboBoxEvent_Change(ByVal Ctrl Sebagai Office.CommandBarComboBox)
9. Beberapa acara Word
Peristiwa Word yang ditangani dalam kode VBA adalah: Document_Close
Yang perlu diproses pada event Application adalah: DocumentBeforeClose, DocumentChange.
Document_Close: event menghasilkan event ketika dokumen ditutup
DocumentBeforeClose: Sebelum dokumen ditutup, Word menentukan apakah dokumen disimpan, memberikan petunjuk terkait, dan melakukan pemrosesan terkait.
DocumentChange: Peralihan dokumen. Peristiwa dihasilkan ketika dokumen dialihkan antara dokumen yang dimodifikasi oleh diri sendiri dan dokumen yang dimodifikasi oleh orang lain.