data etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
data etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Ekim 2023 Perşembe

AutoCAD VBA. Excele veri yaz-2


VBA kodlarıyla Microsoft Office programlarına bağlantı kurulabilir ve programla ilgili birçok işlem yaptırılabilir.

AutoCAD VBA'dan Excel'e bağlantı kurulabildiği gibi tersi de mümkündür
Hatta birçok uyumlu Windows programı birbiri ile bağlanıp kodlarla işlemler yapabilir.

Bu videoda AutoCAD VBA ile Excel'e bağlanmayı ve veri aktarmayı göstermeye devam ediyorum.

Excel ile bağlantı kurmak için 2 yöntem var.
1) Erken bağlama. Early Binding
2) Geç bağlama. Late Binding

Yöntemlerin avantaj ve dezavantajları

Erken bağlama:

Avantajları:
  • Çalışması daha hızlıdır.
  • Intellisense(Akıllı kod tamamlama) bağlanan nesnelerde kullanılabildiği için kod yazımı daha kolaydır.
  • Programın başlangıcında tüm değişkenlere değer atama işlemini yapar. Bu nedenle, programın bellek kullanımı artabilir.
Dezavantajları:
  • Referans eklenmelidir. Ekli değilse çalışmaz.

Geç bağlama:

Avantajları:
  • Referans eklemek gerekli değildir. Kullanıcının bir işlem yapması gerekmez.
  • Bellek kullanımı verimlidir.
Dezavantajları:
  • Nesneye bağlanma çalışma zamanında gerçekleştiği için yavaş çalışır.
  • Intellisense(Akıllı kod tamamlama) bağlanan nesnelerde çalışmaz. Bu yüzden kod yazmak zorlaşır.
Videoda kullanılan VBA kodları:
Sub exceleYaz3()
	'2. yöntem: Geç bağlanma. Late Binding
	Dim xla As Object 'nesne için değişken tanımla
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Visible = True 'ekranda excel nesnesini göster

	Dim wb As Object 'nesne için değişken tanımla
	Set wb = xla.workbooks.Add 'Yeni dosya oluştur.

	Dim sayfa As Object 'nesne için değişken tanımla
	Set sayfa = wb.worksheets.Add 'yeni dosya oluştur
	sayfa.Name = "TEST" 'sayfa adını değiştir.
	sayfa.cells(4, 3) = "Merhaba" 'satır 4, sütun 3'e Merhaba yaz

End Sub

Sub exceleYaz2()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	'xla.Worksheets.Add 'yeni excel sayfası ekle

	Dim sayfa As Excel.Worksheet 'excel sayfası nesnesi
	Set sayfa = xla.worksheets.Add 'yeni excel sayfası ekle

	sayfa.Name = "TEST" 'sayfa adını değiştir

	Set sayfa = xla.worksheets(2) 'excel 2. sayfa
	sayfa.Activate 'sayfayı aktif et

	With sayfa.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		'.Select 'B3 hücresini seç
	End With

End Sub

Sub exceleYaz1()
	'1. yöntem: Erken bağlanma. Early Binding
	'Tools / References / Microsoft Excel xx.x Object Library ekle

	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda excel nesnesini göster

	With xla.Application.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		.Select 'B3 hücresini seç
	End With
	xla.Quit 'Exceli kapat
End Sub

11 Ekim 2023 Çarşamba

AutoCAD VBA. Excele veri yaz-1


VBA kodlarıyla Microsoft Office programlarına bağlantı kurulabilir ve programla ilgili birçok işlem yaptırılabilir.
AutoCAD VBA'dan Excel'e bağlantı kurulabildiği gibi tersi de mümkündür.
Hatta birçok uyumlu Windows programı birbiri ile bağlanıp kodlarla işlemler yapabilir.

Bu videoda AutoCAD VBA ile Excel'e bağlanmayı ve veri aktarmayı gösterdim.

Excel ile bağlantı kurmak için 2 yöntem var.
1. yöntem: Referans kullanmak. Erken bağlanma(Early Binding)
2. yöntem: Referans kullanmadan kod ile bağlanma. Geç bağlanma(Late Binding)
İki yöntemin de avantaj ve dezavantajları var.
Bu videoda 1. yöntem ile Excele nasıl bağlanacağı gösterildi.

Videoda kullanılan VBA kodları:
Sub exceleYaz()
	Dim xla As Excel.Application 'excel uygulamasını örnek alan nesne oluştur
	Set xla = CreateObject("Excel.Application") 'excel nesnesi oluşturup değişkene aktar
	xla.Workbooks.Add 'Yeni dosya oluştur.
	xla.Visible = True 'ekranda göster 'excel nesnesini göster
	'xla.Application.Cells(3, 2).Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
	'xla.Application.Range("B3").Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
	With xla.Application.Range("B3")
		.Value = "Merhaba" 'Satır 3, Sütun 2'ye Merhaba yaz
		.Interior.color = vbRed 'zemin rengi kırmızı
		.Font.color = vbWhite 'yazı rengi beyaz
		.Font.Bold = True 'kalın yazı
		.Select 'B3 hücresini seç
	End With
	xla.Quit 'Exceli kapat
End Sub

20 Haziran 2023 Salı

QuickBasic - 2: Veri Tipleri

Yayınlama: 2000
Güncelleme: 20 Haziran 2023
QuickBasic'te çeşitli veri tipleri vardır.
Belleğe aktarılacak veriler için bellekte gereken boyutta yer açılır. Değişkenin içeriği ancak bu şekilde bellekte düzenli bir şekilde yerleşir.

Örnek:
A% = 126
A değişkenin yanındaki % işareti değişkenin bir INTEGER veri tipine sahip olduğunu gösterir.
A
değişkeni için bellekte 2 byte'lık yer açılır. Çünkü INTEGER veri tipi 2 byte'dır. 8 bit (binary digit= ikilik sayı) 1 baytı oluşturur.
1 baytın alacağı değer sayısal olarak 0-255, karakter olarak ise 1 karakter(harf, rakam, simge)dir.

Açılan bellek alanının bir kapasitesi olduğu için değişkene kapasitesinden daha büyük veri aktarmak Owerflow (aşırı yükleme, taşma) hatasına neden olacaktır.

Örnek:
A% = 32768 'Owerflow (taşma hatası)
PRINT A%
A% değişkeni 2 baytlık(16 bit) INTEGER değişken olduğu için alabileceği değer aralığı -32768 ile +32767 olduğu için örnekte verilen 32768 değeri sınırı aşmaktadır.
Yani bellekte açılan alana bu sayı aktarılamaz. O yüzden hata verir. Değişken türü ya da değeri değiştirilmelidir.

Normalde 2 bayt(16 bit) 256*256 = 0-65536 (2 üzeri 16 = 65536) arası değer alabilir. Ancak INTEGER değişkende negatif sayıları da kullanabilmek için 16 bitin 1 biti sayının + ya da - işareti için kullanılmaktadır.
Böylece sayı için 15 bit, işaret için 1 bit kullanılır.
15 bit (2 üzeri 15) = 32768

13 Aralık 2022 Salı

Excel satırlarını belli sayıda bölme ve dosya veya sayfalara aktarma

Yayınlama: 20/02/2021
Güncelleme: 13/12/2022
Donanım Haber Forumundaki bir soru üzerine cevap olarak verdiğim Excel VBA kodlamaları buraya aktarıyorum.

Soru 1

Elimde içerisinde 40.000 satır veri bulunan bir Excel dosyası var. Bu 40.000 satırı 100'erli olarak bölmem gerekiyor.

Cevap: Aşağıdaki yazdığım VBA makrosu ile 100'erli satır olarak yeni eklenen sayfalara aktarılmaktadır.
Makroları kullanmak için;
Excel dosyası açıkken;
Excel durum çubuğundaki sayfa adında sağ tıkla / Kod görüntüle
Kod alanına aşağıdaki kodları ekle
Çalıştırmak için F5e bas ya da Excel'e geç / ALT+F8e bas makroyu seç / Çalıştır.

Sub SatirlariSayfalaraAktar_v1()
 'Excel satırlarını 100'erli olarak bölüp yeni sayfalara aktarır
 'makro: Mesut Akcan
 '15 Eylül 2018
 For n = 1 To Cells.SpecialCells(xlLastCell).Row Step 100
     satirlar = Str(n) & ":" & Trim(Str(n + 99))
     Rows(satirlar).EntireRow.Copy
     Sheets.Add After:=ActiveSheet
     ActiveSheet.Paste 
     DoEvents
 Next
 Sheets(1).Activate
 End Sub

Soru 2

Bu 100'lü bölümleri farklı yeni Excel dosyası olarak kaydedebilir miyiz.