Monday, September 17, 2007

Make word automation by vfp (Using table in Word)

Sample to make word report in VFP usint table in microsoft word..

CLEAR
SET TALK OFF
SET CONSOLE OFF
DIMENSION woArray1(6), woArray2(6), woArray3(6)
STORE 1.17 TO woArray1(1)
STORE 0.16 TO woArray1(2)
STORE 0.29 TO woArray1(3)
STORE 0.75 TO woArray1(4)
STORE 3.56 TO woArray1(5)
STORE 0.94 TO woArray1(6)

STORE 0.70 TO woArray2(1)
STORE 2.81 TO woArray2(2)
STORE 0.38 TO woArray2(3)
STORE 1.12 TO woArray2(4)
STORE 1.13 TO woArray2(5)
STORE 0.74 TO woArray2(6)
oRow = 53 - oKeyEnter
oWord = CREATEOBJECT("Word.Application")
oWord.Documents.Add
owRange = oWord.Activedocument.Range()
woTable = oWord.Activedocument.Tables.Add(owRange, oRow, 6)

owRange.pagesetup.LeftMargin = oWord.InchesToPoints(1) && Margin kiri
owRange.pagesetup.RightMargin = oWord.InchesToPoints(0.50) && Margin Kanan
owRange.pagesetup.TopMargin = oWord.InchesToPoints(0.25) && Margin Atas
owRange.pagesetup.BottomMargin = oWord.InchesToPoints(0.50) && Margin Bawah
owRange.pagesetup.PaperSize = 7 && Menentukan ukuran kertas A4

** Setting table pertama
FOR i = 1 TO 6 && Row 1 s/d 6 disimpan dalan variabel i
FOR j = 1 to 32 && column 1 s/d 31 disimpan dalam variabel j
woTable.Cell[j, i].Width = oWord.InchesToPoints(woArray1(i)) && Pembentukan lebar row yg disimpan dalam arrray
ENDFOR
ENDFOR

** Setting table kedua
FOR k = 1 TO 6 && Row 1 s/d 6 disimpan dalan variabel k
FOR l = 33 to oRow && column 1 s/d 31 disimpan dalam variabel l
woTable.Cell[l, k].Width = oWord.InchesToPoints(woArray2(k))&& Pembentukan lebar row yg disimpan dalam arrray
ENDFOR
ENDFOR

** Start of heading


WITH woTable
.Cell(1, 6).Merge(woTable.Cell(4, 6))
oWord.Activedocument.Shapes.AddPicture("c:\temp\logo2.jpg")
.cell[1, 1].range.InsertAfter(ALLTRIM(M.OLD_PT_DES))
.Cell(1, 1).Merge(woTable.Cell(1, 5))
* .cell[1, 6].range.Shapes.AddPicture("c:\temp\logo2.jpg")
.Cell[1, 1].range.ParagraphFormat.Alignment = 1
.Cell[1, 1].range.Font.Name = "Optima"
.Cell[1, 1].range.Font.Size = 28
.Cell[1, 1].range.Font.Bold = 1

.cell[2, 1].range.InsertAfter("JLN. PENGADAIAN NO. 1101 BUKIT BESAR, PALEMBANG - INDONESIA")
.Cell(2, 1).Merge(woTable.Cell(2, 5))
.Cell[2, 1].range.ParagraphFormat.Alignment = 1
.Cell[2, 1].range.Font.Name = "Optima"
.Cell[2, 1].range.Font.Size = 9

.cell[3, 1].range.InsertAfter("Tel.(0711)878625(Hunting) - Fax(0711)854684")
.Cell(3, 1).Merge(woTable.Cell(3, 5))
.Cell[3, 1].range.ParagraphFormat.Alignment = 1
.Cell[3, 1].range.Font.Name = "Optima"
.Cell[3, 1].range.Font.Size = 9

.cell[5, 1].range.InsertAfter("SURAT KEPUTUSAN" )
.Cell(5, 1).Merge(woTable.Cell(5, 6))
.Cell[5, 1].range.ParagraphFormat.Alignment = 1
.Cell[5, 1].range.Font.Bold = 1
.Cell[5, 1].range.Font.UnderLine = 1

.cell[6, 1].range.InsertAfter("No. " + ALLTRIM(M.LETTER_ID))
.Cell(6, 1).Merge(woTable.Cell(6, 6))
.Cell[6, 1].range.ParagraphFormat.Alignment = 1

.cell[7, 1].range.InsertAfter("Tentang")
.Cell(7, 1).Merge(woTable.Cell(7, 6))
.Cell[7, 1].range.ParagraphFormat.Alignment = 1

.cell[9, 1].range.InsertAfter(ALLTRIM(M.LETTER_DES))
.Cell(9, 1).Merge(woTable.Cell(9, 6))
.Cell[9, 1].range.ParagraphFormat.Alignment = 1
.Cell[9, 1].Range.Font.Bold = 1

.cell[11, 1].range.insertAfter("Menimbang")
.cell[11, 2].range.InsertAfter(":")
.Cell[11, 4].Range.InsertAfter("Bahwa dalam rangka penyempurnaan organisasi perusahaan dan membenahi formasi tenaga kerja di " + ALLTRIM(m.new_ou_des) + " " + ALLTRIM(m.new_pt_des))
.Cell(11, 4).Merge(woTable.Cell(11, 6))
.Cell[11, 4].range.ParagraphFormat.Alignment = 3

.cell[13, 1].range.insertAfter("Mengigat dan Memperhatikan")
.cell[13, 2].range.InsertAfter(":")
.cell[13, 3].range.InsertAfter("1.")
.Cell[13, 4].Range.InsertAfter("Masa Kerja saudara (NIK. " + ALLTRIM(m.old_emp_num) + " di perusahaan sejak " + ALLTRIM(DTOC(m.join_dte)) + " dengan jabatan terakhir sebagai " + ALLTRIM(m.old_job_des) + " " + ALLTRIM(m.old_ou_des) + " " + ALLTRIM(m.old_pt_des))
.Cell(13, 4).Merge(woTable.Cell(13, 6))
.Cell[13, 4].range.ParagraphFormat.Alignment = 3

.cell[14, 3].range.InsertAfter("2.")
.Cell[14, 4].Range.InsertAfter("Syarat - syarat kerja yang dibutuhkan pada posisi/jabatan yang ada dikebun" + ALLTRIM(m.new_ou_des) + " " + ALLTRIM(m.new_pt_des))
.Cell(14, 4).Merge(woTable.Cell(14, 6))
.Cell[14, 4].range.ParagraphFormat.Alignment = 3

.cell[15, 3].range.InsertAfter("3.")
.Cell[15, 4].Range.InsertAfter("Usulan yang telah disetujui oleh manajemen")
.Cell(15, 4).Merge(woTable.Cell(15, 6))

.cell[17, 1].range.InsertAfter(ALLTRIM(m.letter_des1))
.Cell(17, 1).Merge(woTable.Cell(17, 6))
.cell[17, 1].range.paragraphFormat.Alignment = 1
.Cell(17, 1).Range.Font.Bold = 1

.cell[19, 1].range.insertAfter("Menetapkan")
.cell[19, 2].range.InsertAfter(":")
.Cell[19, 4].Range.InsertAfter("Terhitung mulai tanggal " + ALLTRIM(DTOC(mutasi_dte)))
.Cell(19, 4).Merge(woTable.Cell(19, 6))

.cell[20, 4].range.insertAfter("Saudara")
.cell[20, 5].range.InsertAfter(": " + ALLTRIM(m.emp_nme))

.cell[21, 4].range.insertAfter("NIK")
.cell[21, 5].range.InsertAfter(": " + ALLTRIM(m.new_emp_num))

.cell[23, 1].range.InsertAfter(ALLTRIM(m.letter_des2))
.Cell(23, 1).Merge(woTable.Cell(23, 6))
.cell[23, 1].range.paragraphFormat.Alignment = 1
.Cell(23, 1).Range.Font.Bold = 1

.cell[24, 4].range.insertAfter("Ke")
.cell[24, 5].range.InsertAfter(": " + ALLTRIM(m.new_ou_des))

.cell[25, 4].range.insertAfter("Jabatan")
.cell[25, 5].range.InsertAfter(": " + ALLTRIM(m.new_job_des))

.cell[27, 4].range.insertAfter("Tunjangan - tunjangan dan jaminan sosial diberikan sesuai dengan ketentuan peraturan perusahaan yang berlaku")
.Cell(27, 4).Merge(woTable.Cell(27, 6))
.Cell[27, 4].range.ParagraphFormat.Alignment = 3

.cell[29, 4].range.insertAfter("Keputusan ini berlaku terhitung mulai tanggal " + ALLTRIM(DTOC(m.mutasi_dte)) + " dan apabila dikemudian hari ternyata terdapat kekeliruan, akan diubah sebagai mana mestinya")
.Cell(29, 4).Merge(woTable.Cell(29, 6))
.Cell[29, 4].range.ParagraphFormat.Alignment = 3

.cell[33, 4].range.insertAfter("Dikeluarkan di")
.cell[33, 5].range.insertAfter(": Palembang")

.cell[34, 4].range.insertAfter("Pada tanggal")
.cell[34, 5].range.insertAfter(": " + ALLTRIM(DTOC(m.letter_dte)))

.cell[35, 4].range.insertAfter(ALLTRIM(m.old_pt_des))
.Cell(35, 4).Merge(woTable.Cell(35, 5))
.cell[35, 4].range.font.bold = 1

.cell[40, 4].range.insertAfter(ALLTRIM(m.rec_nme))
.Cell(40, 4).Merge(woTable.Cell(40, 5))
.cell[40, 4].range.font.bold = 1
.cell[40, 4].range.font.underline = 1

.cell[41, 4].range.insertAfter(ALLTRIM(m.jab_des))
.Cell(41, 4).Merge(woTable.Cell(41, 5))
.cell[41, 4].range.font.bold = 1

.Cell[42, 1].Range.InsertAfter("c.c : ")
.cell[42, 2].range.insertAfter(ALLTRIM(m.letter_cc1))

.cell[44, 1].range.insertAfter(ALLTRIM(m.initi))
.Cell(44, 1).Merge(woTable.Cell(44, 2))

.cell[oRow - 1, 1].range.InsertAfter("isikan footer anda ke 1")
.Cell(oRow - 1, 1).Merge(woTable.Cell(oRow - 1,6))
.Cell[oRow - 1, 1].range.ParagraphFormat.Alignment = 1
.Cell[oRow - 1, 1].range.Font.Name = "Optima"
.Cell[oRow - 1, 1].range.Font.Size = 8

.cell[oRow, 1].range.InsertAfter("
isikan footer anda ke 2")
.Cell(oRow, 1).Merge(woTable.Cell(oRow,6))
.Cell[oRow, 1].range.ParagraphFormat.Alignment = 1
.Cell[oRow, 1].range.Font.Name = "Optima"
.Cell[oRow, 1].range.Font.Size = 8


ENDWITH

WITH oWord
For Each aTable In .ActiveDocument.Tables && Format all tables.
aTable.Borders(-1).LineStyle = 0 && Top border.
aTable.Borders(-2).LineStyle = 0 && LeftaTable.Borders(-3).LineStyle = 1 && Bottom
aTable.Borders(-4).LineStyle = 0 && Right
aTable.Borders(-5).LineStyle = 0 && Horizontal
aTable.Borders(-6).LineStyle = 0 && Vertical
aTable.Borders.Shadow = 0
ENDFOR
ENDWITH

oFile = "c:\temp\" + LEFT(ALLTRIM(m.letter_id), 3) + " " + ALLTRIM(m.letter_des) + " " + RIGHT(ALLTRIM(m.letter_id), 4) + ".doc"
oWord.ActiveDocument.SaveAs(oFile)
MESSAGEBOX("Data telah diconvert ke Word cek di c:\temp\" + LEFT(ALLTRIM(m.letter_id), 3) + " " + ALLTRIM(m.letter_des) + " " + RIGHT(ALLTRIM(m.letter_id), 4) + ".doc")
oWord.Quit()
release owRange, oWord

0 comments: