Bu eğitim, metin dosyalarından içeriğin nasıl okunacağını ve VBA ile çalışma sayfalarına nasıl yapıştırılacağını gösterecektir.
Metin Dosyası İçeriğini Çalışma Sayfasına Okuyun
Bir metin dosyasının içeriğini okumanın en basit yolu, onu bir çalışma sayfasının hücresine kopyalamaktır.
123456789101112 | Alt FSOPasteTextFileContent()FSO'yu Yeni FileSystemObject Olarak DimFSO'yu ayarla = CreateObject("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'buraya metin dosyanızın yolunu ekleyinTextString = FileToRead.ReadAllDosyaOku.KapatThisWorkbook.Sheets(1).Range("A1").Value = TextString 'çalışma sayfasını ve metin dosyasının içeriğinin nereye yapıştırılacağını hücreyi belirtebilirsinizAlt Bitiş |
Yukarıdaki kod, FileSystemObject'i kullanır. Kullanmak için VB komut dosyası çalışma zamanı kitaplığına bir başvuru ayarlamanız gerekir. Daha fazla bilgi için buraya bakın.
FileSystemObject kullanmadan, metin dosyanızın içeriğini aşağıdaki kodla yapıştırabilirsiniz. Metin dosyanız satır ayırıcı içeriyorsa, satır satır yapıştırılacaktır.
123456789101112 | Alt PasteTextFileContent ()Dim wbExcel Çalışma Kitabı, wbText As Çalışma KitabıÇalışma Sayfası Olarak Dim wsExcelSet wbExcel = ThisWorkbook 'burada metin dosyasının içeriğinin hangi Excel dosyasına yapıştırılacağını belirtinSet wsExcel = wbExcel.Sheets(1) 'burada hangi çalışma sayfasının kullanılacağını belirtinSet wbText = Workbooks.Open("C:\Test\TestFile.txt") 'buraya metin dosyanızın yolunu ekleyinwbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Close SaveChanges:=YanlışAlt Bitiş |
Metin Dosya İçeriğini Satır Satır, Sütun Sütun Oku
Metin dosyanız birkaç satıra ve virgül, noktalı virgül, sekme, boşluk vb. ile ayrılmış satırlarda listelenen birkaç öğeye sahip olabilir… Metin dosyasının içeriğini doğru bir şekilde okumak ve yapıştırmak için aşağıdaki koda ihtiyacınız olabilir:
1234567891011121314151617181920212223242526 | Alt PasteTextFileContentWithSeparators()Dize Olarak Dim StrLineFSO'yu Yeni FileSystemObject Olarak DimNesne olarak karartma TSODim StrLineElements Varyant OlarakDim Index As LongDim kadar uzunDize olarak Dim SınırlayıcıFSO'yu ayarla = CreateObject("Scripting.FileSystemObject")TSO = FSO.OpenTextFile("C:\Test\TestFile.txt") olarak ayarlayınDelimiter=", " 'metin dosyanızda kullanılan sınırlayıcıdizin = 1TSO.AtEndOfStream = False iken yapınStrLine = TSO.ReadLineStrLineElements = Böl(StrLine, Sınırlayıcı)i = LBound(StrLineElements) için UBound(StrLineElements) içinCells(Index, i + 1).Value = StrLineElements(i) 'bu kod, metin dosyasının içeriğini aktif çalışma sayfasının A1 (Hücre(1,1)) hücresinden yapıştırmaya başlayacaktır.sonraki benİndeks = İndeks + 1DöngüTSO.KapatAlt Bitiş |
Metin dosyanızda kullanılan sınırlayıcı virgül (“,”), boşluklu virgül (“, “), noktalı virgül (“;”), boşluklu noktalı virgül (“; “), boşluk (“ “), sekme olabilir (sonra değiştir, Sınırlayıcı = vbTab) veya nadir durumlarda başka bir karakter.
Metin Dosyalarını Dizilere Okuyun
Metin dosyanızın içeriğini bir diziye okumanız ve çalışma sayfanıza satır satır, sütun sütun yapıştırmanız gerekiyorsa, aşağıdaki koda ihtiyacınız olacaktır:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray()Dize Olarak Dim SınırlayıcıTextFile'ı Tamsayı Olarak DimFilePath'i Dize Olarak KarartınDosya İçeriğini Dize Olarak KarartınDim LineArray() Dize OlarakDize Olarak Dim DataArray()Dim TempArray() Dize OlarakDim rw As Long, col As LongSınırlayıcı = vbTab 'metin dosyanızda kullanılan sınırlayıcıFilePath = "C:\Test\TestFileTab.txt"rw = 1TextFile = ÜcretsizDosyaTextFile Olarak Girmek İçin FilePath'i AçınFileContent = Input(LOF(TextFile), TextFile)Metin Dosyasını KapatLineArray() = Split(FileContent, vbNewLine) 'metin dosyanızda kullanılan satır ayırıcıya bağlı olarak vbNewLine'ı vbCrLf veya vbLf olarak değiştirinx = LBound(LineArray) için UBound(LineArray) içinLen(Trim(LineArray(x))) 0 iseTempArray = Böl(LineArray(x), Ayırıcı)col = UBound(TempArray)ReDim DataArray'i Koru(col, rw)y = LBound(TempArray) için UBound(TempArray) içinDataArray(y, rw) = TempArray(y)Cells(x + 1, y + 1).Value = DataArray(y, rw) 'bu kod, metin dosyasının içeriğini etkin çalışma sayfasının A1 (Hücre(1,1)) hücresinden yapıştırmaya başlayacaktır.sonraki yılBitirrw = rw + 1Sonraki xAlt Bitiş |
Metin dosyanızdaki satır ayırıcılar, satır başı ve satır besleme kombinasyonu (Chr(13)+Chr(10)) veya satır besleme (Chr(10)) olabilir. Buna göre vbCrLf veya vbLf kullanın. Emin değilseniz, satır ayırıcıyı belirtmek için vbNewLine kullanın.