Skip to main content

AccessTr.neT


Word Şablonu Hazırlama Yardım

Word Şablonu Hazırlama Yardım

#13
Sayın Ozan Hocam.
Konu açarken özellikle dosya eklememiştim. Sitede epey araştırıp örneklere baktım takıldığım yerde soruyu sordum konunun 3. mesajında da bulduğum bir kod yordamını mesaj içine ekleyerek alt formdan alan çağırmayı sordum.
Özellik siz ve Atoz112 nin emeği üzerimde çok geçen sene çok uğraştınız benimle.
Özellikle konu açarken ben sorayım onlar yapsın mantığında değilim. Kendim uygulayarak öğrenmek isterim.

Sitedeki hocalarımızın çabası ve emeğini yakından bilen ve saygı duyan biriiyim bunu bilmenizi isterim
Cevapla
#14
-Sorgudaki ölçüt hatalı, [Forms]![frm_projerisk]![Metin60] yazmışsınız ancak bu isimde form yok, 
- DAO ile sorgudan kayıt tarama işine girersen bu kod hata verir. Sorguda ölçüt olduğu için parametre soracaktır. 


strSQL = "S_RISK"

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)

Kodunu


Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("S_RISK")
qdf![Forms!frm_risk!Metin60] = [Forms]![frm_risk]![Metin60]
 
Set rs = qdf.OpenRecordset()

Kodu ile değiştir, 

Dim rs As DAO.Recordset kodunu da

Dim rs As Recordset kodu ile değiştir.

Bu haliyle worde veri aktarmaya hazır.


Koddaki aktarma işi sıkıntılı, 

intColumns kodu sorgudaki sütun sayısıdır. Tablo oluştururken en fazla 62 sütun oluşturabilirsin. Sorgu tasarımının değiştirilmesi gerekli.

    For i = 1 To rs.Fields.Count
        docTable.Cell(1, i).Range.Text = rs.Fields(i - 1).Name
    Next i

şeklindeki kodun da oluşturulan tabloya uyumlu hale getirilmesi gerekli.

Word belgenizin içeriğinde ne olacak, satır ve sütunlar ne olacak anlaşılmadığı için aktarım konusunda fikrim yok. Rapor görünümü yetersiz.

Örnek word belgesi oluşturun, içindeki veriler tutarlı olsun, aynı veriyi copy/paste ile yapıştırmayın.  Farklı PROJE_ID değerlerinde word belgesindeki hangi alanlar sabit, hangi alanlar değişken belirleyin, değişken alanları kırmızıya boyayın.
İnceleyen ne olduğunu anlasın. Word belgenize göre farklı çözümler üretilebilir. Önceki mesajlarımda da belirttiğim gibi, iş sıkıntılı,
Cevapla
#15
Ozan Hocam
Şuan iş yerinde olduğumdan bakamıyorum. Akşam eve geçince bakacam.
İlginiz için teşekkür ederim.
Cevapla
#16
Sayın Hocalarım
Çalışmayı açıp "frm_degerlendir" formunu açıp ilgili seçim ve alanları dolduruyorum.
form üzerindeki "Word" Butonu a worde gönderme kodlarını ekledim. kod hazırladığım word şablonuna form üzerindeki bilgileri aktarmaktadır. " Fakat butona tıklandığında ilgili referans yüklü olmasına rağmen. "activex component can't create object hatası almaktayım. sıkıştır onar yapıp çalışmayı kapatıp açınca sorun düzeliyor.

Sorum : Bu sorunu Nasıl düzeltebilirim?

- Çalışmada word rapor u alırken şablonda sadece tek sayfa aktarmaktadır. Benim yapmak istediğim çalışma içinde bulunan "riskrapor" da olduğu gibi her soruyu faklı sayfalara eklemek.

Bu konuyu nasıl Düzelte bilirim?

- çalışmada gördüğünüz hatalar var ise bunlar hakkında çözüm önerileriniz nelerdir.

İlgi ve alakanıza teşekkür ederim
.rar murat352018.rar (Dosya Boyutu: 324,12 KB | İndirme Sayısı: 2)
Cevapla
#17
(03/06/2018, 16:22)murat dikme yazdı: Fakat butona tıklandığında ilgili referans yüklü olmasına rağmen. "activex component can't create object hatası almaktayım. sıkıştır onar yapıp çalışmayı kapatıp açınca sorun düzeliyor.

Hatanın sebebi, formu açıp hiç tasarım görünümüne geçmeden butonu tıkladığınızda worde aktarımı yapar, ancak buton tıkladıktan sonra word belgesi açık iken formu tasarımda açarsanız bu hatayı verebilir.

(03/06/2018, 16:22)murat dikme yazdı: Çalışmada word rapor u alırken şablonda sadece tek sayfa aktarmaktadır. Benim yapmak istediğim çalışma içinde bulunan "riskrapor" da olduğu gibi her soruyu faklı sayfalara eklemek.
Word şablonu ile bu işlemi yapamazsınız. Yeni word belgesi oluşturup verileri oluşturulan bu belgeye aktarmanız lazım.

Aşağıdaki kod word belgesine üst tabloyu ekler ve resim ile birlikte test amaçlı 1 veri gönderir.

Dim oWordDoc As Word.Document
Dim WordApp As Word.Application
Dim sDocument As String


   sDocument = CurrentProject.Path & "\Risk Raporu.doc"
   
   Set WordApp = CreateObject("Word.Application")
   
   WordApp.Visible = True
   
   AppActivate "Microsoft Word"
   
   If FileExists(sDocument) = False Then
   
       Set oWordDoc = WordApp.Documents.Add
       oWordDoc.SaveAs sDocument
  Else
                   
       Set oWordDoc = WordApp.Documents.Open(CurrentProject.Path & "\Risk Raporu.doc")
   
   End If


   
       WordApp.ActiveDocument.Sections(1).PageSetup.Orientation = wdOrientLandscape
       WordApp.ActiveDocument.Sections(1).PageSetup.LeftMargin = InchesToPoints(0.75)
       WordApp.ActiveDocument.Sections(1).PageSetup.RightMargin = InchesToPoints(0.1)
       WordApp.ActiveDocument.Sections(1).PageSetup.TopMargin = InchesToPoints(0.3)
       WordApp.ActiveDocument.Sections(1).PageSetup.BottomMargin = InchesToPoints(0.2)

   i = 1

   Set db = CurrentDb
   Set rs = db.OpenRecordset("sorgu_rapor", dbOpenSnapshot)
   
   rs.MoveLast:    rs.MoveFirst
   GVeriSayisi = rs.RecordCount

       If GVeriSayisi <> 0 Then
     
           Do Until rs.EOF = True
                 
           WordApp.Selection.Font.Bold = True
           WordApp.Selection.Font.Size = "24"
           WordApp.Selection.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphCenter
           
           WordApp.Selection.TypeText "TESPİT EDİLEN RİSK VE AÇIKLAMASI"
         
           WordApp.ActiveDocument.Tables.Add Range:=WordApp.Selection.Range, NumRows:=6, NumColumns:= _
                                           3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
                                           wdAutoFitFixed
                   
           Set oWordTbl = oWordDoc.Tables(i)
           
           oWordTbl.Cell(1, 1).Select
           WordApp.Selection.Font.Size = "9"
           oWordTbl.Rows(1).Height = "0.5"
           WordApp.Selection.TypeText "TESPİT EDİLEN RİK KONUSU"
           
           oWordTbl.Cell(3, 1).Select
           WordApp.Selection.Font.Size = "9"
           oWordTbl.Rows(3).Height = "0.5"
           WordApp.Selection.TypeText "TESPİT EDİLEN RİSK DURUMU"
           
           oWordTbl.Cell(5, 1).Select
           WordApp.Selection.Font.Size = "9"
           oWordTbl.Rows(5).Height = "0.5"
           WordApp.Selection.TypeText "TESPŞT EDİLEN RİSK İLE İLGİLİ AÇIKLAMA"
           
           oWordTbl.Rows(6).HeightRule = wdRowHeightExactly

           oWordTbl.Rows(6).Height = 99
           
           

           oWordTbl.Cell(Row:=1, Column:=2).Merge _
           MergeTo:=oWordTbl.Cell(Row:=6, Column:=2)
           oWordTbl.Cell(Row:=1, Column:=3).Merge _
           MergeTo:=oWordTbl.Cell(Row:=6, Column:=3)
           

       GResimYolu = rs!txtresim1.Value
           
       If Len(GResimYolu) > 0 Then
           oWordTbl.Cell(6, 1).Select
       Set newPicture = WordApp.Selection.InlineShapes.AddPicture(FileName:=rs!txtresim1.Value, LinkToFile:=False, SaveWithDocument:=True)
           newPicture.LockAspectRatio = msoTrue
           newPicture.Height = 110
           newPicture.Width = 90
       
     End If
     
       oWordTbl.Cell(1, 2).Select
       WordApp.Selection.TypeText rs!SORU.Value
       
       oWordTbl.Select
       WordApp.Selection.Collapse WdCollapseDirection.wdCollapseEnd
       
       If GVeriSayisi <> i Then
           
           WordApp.Selection.InsertBreak Type:=wdPageBreak
       
       End If
       
       i = i + 1
       
       rs.MoveNext
 
       Loop

 End If
Bu kod üstte belirttiğim gibi test amaçlıdır.
Cevapla
#18
Sayın Ozan Hocam
İlginize teşekkür ederim. anlaşılan bu çalışma acceste yapılamamakta. Word dosyası üzerinden yapılması gerek.
ilginize tekrar teşekkür ederim. konuyu kapatabilirsiniz
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task