• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makro ile pc den bulunan programa teklif oluşturtma.

activesheets i sayfa1 olarak değiştirdim.
Her yapştırma işleminden sonra hafızayı boşalttım.

Bu şekilde deneyiniz.


Kod:
#include <AutoItConstants.au3>
Func _WinWaitActivate($title,$text,$timeout=0)
   WinWait($title,$text,$timeout)
   If Not WinActive($title,$text) Then WinActivate($title,$text)
   WinWaitActive($title,$text,$timeout)
EndFunc

$oExcel = ObjCreate("Excel.Application")
$oExcel.Workbooks.Open (@ScriptDir & "\teklif.xlsx").Sheets (1).Select ()
$oExcel.Visible = True
;Excel dosyası açıldıktan 10 sn sonra bilgi girişine başlanacaktır.
Sleep(5000)
Local $satir=0

;5 kayıt için 5 daha fazlası için bu rakam arttırılabilir
For $i = 1 To 3
   ;Açılan excel dosyasından 1,3,4 kolonlarından veriler okunuyor.
   Local $stok=$oExcel.Sheets("Sayfa1").cells($i, 1).value

   ;Okunan veri boş ise döngü bitiriliyor.
   if $stok="" then ExitLoop

   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi -","")
   Local $sText = WinGetTitle("[ACTIVE]")
   $sText=StringMid($sText,17,9)

   ;f3 basılıyor
   send("{F3}")

   ;Stokkodu gönderiliyor
   Sleep(1000)
   send($stok)

   ;entere basılıyor
   send("{ENTER}")
   Sleep(1000)

   MouseClick($MOUSE_CLICK_LEFT,247 , 122, 2)

   ;ilk veri kopyalanıyor
   Send("^C")

   ;Hafızaya alınmış kopyalanan değer Sayfa2 deki satir ve sutuna yapıştırılır.
   ;Değerler excel de sağa doğru yapıştırılacak ise $satir, 1 deki değer 2,3,4 olarak değiştirilir.
   sleep(2000)
   $satir=$satir+1
   $oExcel.Sheets("Sayfa2").cells($satir, 1).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor stok kodu alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")
   ;Sorgulama ekranı getiriliyor.

   sleep(2000)
   send("{TAB 2}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 2).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor fiyatı alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")

   ;Sorgulama ekranı getiriliyor.
   sleep(2000)
   send("{TAB 22}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 3).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor fiyat tipini  alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")

   ;Sorgulama ekranı getiriliyor.
   sleep(2000)
   send("{TAB}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 4).value=ClipGet()
   ClipPut("")

   ;buraya ekledik hata olursa yan sutuna 2 yazdıracak
   If winexists('IFS Uygulamaları', '') Then
      sleep(2000)
      send("{TAB}")
      send("{ENTER}")
      sleep(2000)

      $oExcel.Sheets("Sayfa1").cells($i, 9).value="2"
      ClipPut("")
   Endif

 Next

 ;$oExcel.Workbooks.close
 
Asri bey ilginiz için teşekkür ederim ,çok deneme yaptım fakat sonuç aynı ,hata ekranını gördüğü an hata ekranı sanki yanıp sönüyor dınk yapar gibi ama entere basmıyor ben geliyorum kutucuğa basıyorum çalışmaya devam ediyor ,fakat eskisi gibi sayfa 2 ye ıfs uygulamaları hata kodu yazıyor bir türlü çıkamadım işin için den .
 
Hata ekranı , bu satırlardan sonra mı geliyor?
Hata ekranı görüntüsü linki verebilir misiniz?

;2 veri kopyalanıyor
Send("^C")
sleep(2000)
$oExcel.Sheets("Sayfa2").cells($satir, 4).value=ClipGet()
ClipPut("")
 
Asri bey,

Kusura bakmayın şirkette upload yasak evden yazıyorum ,hata ekranı aşağıdaki gibidir ,

sistem hatası sadece excelden stok kodu gönderdikten sonra oluşabilir , örnek kod üretilen dir yada kod eksiktir yada stok kodu isimdir vs

http://s5.dosya.tc/server3/dlnlai/hata_ekrani.jpg.html

burdan sonra eklemeyi denemedim şimdi geldi aklıma sabah ilk iş deneyim yada sizin fikriniz öneriniz varmıdır ?

Kod:
;f3 basılıyor
   send("{F3}")

   ;Stokkodu gönderiliyor
   Sleep(1000)
   send($stok)

   ;entere basılıyor
   send("{ENTER}")
   Sleep(1000)
 
Aşağıdaki şeklide deneyiniz.

Hata kontrol ettiğinizde hatanın oluştuğu komutun hemen sonrasında kontrol etmeniz gerekiyor.


Kod:
#include <AutoItConstants.au3>
Func _WinWaitActivate($title,$text,$timeout=0)
   WinWait($title,$text,$timeout)
   If Not WinActive($title,$text) Then WinActivate($title,$text)
   WinWaitActive($title,$text,$timeout)
EndFunc

$oExcel = ObjCreate("Excel.Application")
$oExcel.Workbooks.Open (@ScriptDir & "\teklif.xlsx").Sheets (1).Select ()
$oExcel.Visible = True
;Excel dosyası açıldıktan 10 sn sonra bilgi girişine başlanacaktır.
Sleep(5000)
Local $satir=0

;5 kayıt için 5 daha fazlası için bu rakam arttırılabilir
For $i = 1 To 3
   ;Açılan excel dosyasından 1,3,4 kolonlarından veriler okunuyor.
   Local $stok=$oExcel.Sheets("Sayfa1").cells($i, 1).value

   ;Okunan veri boş ise döngü bitiriliyor.
   if $stok="" then ExitLoop

   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi -","")
   Local $sText = WinGetTitle("[ACTIVE]")
   $sText=StringMid($sText,17,9)

   ;f3 basılıyor
   send("{F3}")

   ;Stokkodu gönderiliyor
   Sleep(1000)
   send($stok)

   ;entere basılıyor
   send("{ENTER}")
   Sleep(1000)

   ;buraya ekledik hata olursa yan sutuna 2 yazdıracak
   If winexists('IFS Uygulamaları', '') Then
      $oExcel.Sheets("Sayfa1").cells($i, 9).value="2"
      ClipPut("")
      sleep(2000)
      send("{TAB}")
      send("{ENTER}")
      sleep(2000)
   Endif

   MouseClick($MOUSE_CLICK_LEFT,247 , 122, 2)

   ;ilk veri kopyalanıyor
   Send("^C")

   ;Hafızaya alınmış kopyalanan değer Sayfa2 deki satir ve sutuna yapıştırılır.
   ;Değerler excel de sağa doğru yapıştırılacak ise $satir, 1 deki değer 2,3,4 olarak değiştirilir.
   sleep(2000)
   $satir=$satir+1
   $oExcel.Sheets("Sayfa2").cells($satir, 1).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor stok kodu alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")
   ;Sorgulama ekranı getiriliyor.

   sleep(2000)
   send("{TAB 2}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 2).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor fiyatı alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")

   ;Sorgulama ekranı getiriliyor.
   sleep(2000)
   send("{TAB 22}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 3).value=ClipGet()
   ClipPut("")

   ;satın alma ekranına gıdıyor fiyat tipini  alıyor
   Opt('TrayIconDebug', 1)
   Opt("WinTitleMatchMode", 2)
   _WinWaitActivate("SA Malzemesi Tedarikçisi","")

   ;Sorgulama ekranı getiriliyor.
   sleep(2000)
   send("{TAB}")

   ;2 veri kopyalanıyor
   Send("^C")
   sleep(2000)
   $oExcel.Sheets("Sayfa2").cells($satir, 4).value=ClipGet()
   ClipPut("")

 Next

 ;$oExcel.Workbooks.close
 
Asri bey günaydın elinize sağlık süper çalışıyor :) artık İskenderi karşılık lı yiyelim böyle olmuyacak bu iş.
 
Asri usta merhaba ,

geçen bahsettiğim açık email e dosya ekleme ve konu kısmına programdan veri ekleme işlemi için kısmi başarı elde ettim çok uğraştım ama bir türlü açık emailin içine programdan kopylanan veriyi ekletemedim zamanınız varmıdır yardımcı olabilir misiniz ,


programı aktif eden ve pdf dsoaysına açık emailin içine kopyalayan kod ,

(eksik kalan açık emailin içine programdan kopyalanan yazının email konu kısmına yazılabilmesi. )

#include <OutlookEX.au3>


Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc

Opt('TrayIconDebug', 1)
Opt("WinTitleMatchMode", 2)
_WinWaitActivate("SA Malzemesi Tedarikçisi -","")
Local $sText = WinGetTitle("[ACTIVE]")
$sText=StringMid($sText,17,9)
;Sorgulama ekranı getiriliyor.
sleep(2000)
send("{TAB 4}")

;2 veri kopyalanıyor
Send("^C")
sleep(2000)


;Now please help to copy the data to the email subject section,şimdi email konu kısmına veri kopyalama işlemi için lütfen yardım ,


Global $oOutlook, $oInspector, $oItem
; Open connection to Outlook
$oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)

; Access the currently displayed mail item
$oInspector = $oOutlook.ActiveInspector
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error accessing ActiveInspector. @error = " & @error & ", @extended = " & @extended)
$oItem = $oInspector.CurrentItem
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error accessing current item. @error = " & @error & ", @extended = " & @extended)
If $oItem.Class <> $olMail Then Exit MsgBox(16, "OutlookEX UDF", "Current item isn't a mail item. @error = " & @error & ", @extended = " & @extended)

; Add a PDF file
$sAttachment ="C:\Users\mdogru\Desktop\Yen\"&"Y20002151.pdf"
_OL_ItemAttachmentAdd($oOutlook, $oItem, Default, $sAttachment)

; Change <Test.pdf> to the name of your PDF file - or change the whole path if the fil is stored in a different directory.



If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error adding attachment to mail item. @error = " & @error & ", @extended = " & @extended)

; Display item
$oItem.Display
 
Geri
Üst