Skip to main content

AccessTr.neT


Excel İle Wordden Veri Alma

Excel İle Wordden Veri Alma

Çözüldü #1
Merhaba, daha önce bu konuya benzer bir başlık açmıştım şimdi tersten bir mantık yürütmeye çalışıyorum. Excel sayfamda A sütununda word dosyalarının yolları mevcut ve B sütununa bu doc'lari her hücreye 30bin karakter gelecek eğer aşıyorsa bir satır ekleyerek alt satıra alacak şekilde bir Vba koduna ihtiyacım var. Bu onuda yardımlarınızı bekliyorum.

Önceki konu (https://accesstr.net/konu-excel-vba-ile-...detme.html)
.rar worddenexcele_verial - Kopya.rar (Dosya Boyutu: 7,25 KB | İndirme Sayısı: 2)
Son Düzenleme: 28/02/2022, 19:43, Düzenleyen: akaygisiz. (Sebep: Dosya eki eklendi.)
Cevapla
#2
dosya yolları mevcut mu yoksa sadece önceki konunuzdaki gibi olacak ama sütunların yeri mi değişecek
örnek çalışmanızı ekler misiniz?
Cevapla
#3
Hocam mobilden yazdığım için ekleyemedim, önceki konuda olduğu gibi fakat burada A sütunu elimde olan dosyanın yolu örnek.doc , B sütunu ise bu belgenin hücreye aktarılması şeklinde. Sizin vermiş olduğunuz kod üzerinden denedim fakat başarılı olamadım.
Cevapla
#4
(28/02/2022, 15:40)berduş yazdı: dosya yolları mevcut mu yoksa sadece önceki konunuzdaki gibi olacak ama sütunların yeri mi değişecek
örnek çalışmanızı ekler misiniz?

Örnek çalışmayı 1. mesaja güncelleme olarak ekledim hocam.
Cevapla
#5
kodları aşağıdaki gibi düzenleyip dener misiniz?
Not: A sütunundaki yollar önce diziye aktarılıp sonra sayfa silindiği için hata ihtimaline karşı kodu çalıştırmadan önce dosya yolları başka yere kaydedilmeli
Public Sub Word2Text(ByVal xFilePath As String, ByVal xSatir As Long)  'Word2Text "d:\Desktop\Word2Excel\19 - Vba Class Modules.docx"

Dim x As Document
Set x = Documents.Open(xFilePath, ReadOnly:=True, Visible:=False)
Dim data
Set data = x.Content
' do something with the content or the document
xStr = data
Sayfa1.Cells(xSatir, 1) = xFilePath
For HrfSay = 1 To Len(data & "") Step 30000
Sayfa1.Cells(xSatir, 2) = Mid(xStr, HrfSay, 30200)
xSatir = xSatir + 1
Next HrfSay
'close the document
x.Close
Set x = Nothing

End Sub

Sub WordAd()
t1 = Timer
Application.ScreenUpdating = False
Set sht = ThisWorkbook.Worksheets("WordXL")
SonStr = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
Dim Dz As Variant
Dz = sht.Range("A2:A" & SonStr)
DsSay = UBound(Dz)
Debug.Print DsSay
sht.Range("A2:A" & SonStr).Cells.Clear
For Each xWord In Dz
i = sht.Cells(sht.Rows.Count, "B").End(xlUp).Row + 1
Word2Text xWord, i
Next xWord

Application.ScreenUpdating = True
'Debug.Print "Normal Aktarım Tamam! " & vbNewLine & "Süre : " & Timer - t1 & " saniye " & vbNewLine & "Aktarılan Dosya sayısı : " & DsSay
MsgBox "Aktarım Tamam! " & vbNewLine & "Süre : " & (Timer - t1) & " saniye " & vbNewLine & "Aktarılan Dosya sayısı : " & DsSay
End Sub

isterseniz dosya yolları bir sayfada durur işlem başka sayfada yapılır
Cevapla
#6
Hocam denedim fakat DsSay = UBound(Dz) bu satır ile ilgili "run-time error-13 type mismatch" hatası alıyorum. Acaba eklemem gereken bir referans olabilir mi?

Hocam ben sadece A2 satırına belge yolu girmiştim deneme amaçlı. Şimdi birden fazla girdiğimde sorunsuz çalıştı +rep
Son Düzenleme: 28/02/2022, 21:30, Düzenleyen: akaygisiz.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task