2016-03-28 19 views
0

Tıklama düğmesine basılan bir komut dosyası oluşturdum, böylece yoldan ve biçimden CSV dosyasını yükler ve kaydeder. 1 ... 10000 dosyalarım olduğu için 1.txt gibi dosya yaptım. Sorun alıyorum, her şey yolunda gidiyor ama 10-13 dosyaları sonra hata veriyor ve excel kapanıyor. Aşağıdaki kodları kullanıyorum. Lütfen bana nerede hata yaptığımı göster. Sanırım hata yaptım, redim denedim ama bu bana aynı hatayı veriyor. Bu, işlem başlatmak için düğmeme yerleştirdiğim alt. Binlerce dosyaya sahip olduğum için lütfen bana bir çözüm öner.10 dosya kaydedildikten sonra Excel bana hata veriyor

Sub WorkbooksLoop() 
' get the list of filenames 
Dim pageStart As Integer 
Dim pageEnd As Integer 
pageStart = CInt(Cells(3, "C").Value) ' getting from cell of excel sheet 
pageEnd = CInt(Cells(4, "C").Value) ' getting from cell of excel sheet 
Dim Filenames(44) As String ' variable I know there are 44 files 


For j = pageStart To pageEnd 
     Filenames(j) = CStr(j) + ".txt" 
Next j 


On Error GoTo NoFilenames 

Dim controllerwb As Workbook 
Set controllerwb = ActiveWorkbook 
Dim wb As Workbook 
Dim fname As Variant 

Dim rootPath As String 
rootPath = ThisWorkbook.Path 
rootPath = rootPath & "\" 

For Each fname In Filenames 
    ' Make the controller active 
    controllerwb.Activate 

    On Error Resume Next 
    ' If activate fails, then the workbook isn't open 
    Workbooks(fname).Activate 
    ' If activate fails, then the workbook isn't open 
    If Err <> 0 Then 
     OpenFile (rootPath & fname) 
     Set wb = ActiveWorkbook 
     wb.Activate 
    ' Otherwise, workbook is already open, refer to it by name 
    Else 
     OpenFile (rootPath & fname) 
     Set wb = ActiveWorkbook 
    End If 

    ' do something to the open workbook my process to format sheet 
     deletingRowsColumns 
     ledgerSetup 
     resizeColumns 
     columnLines 
     columnAlignments 
     mergeTitles 
     settingNames 
    wb.Close 
Next fname 
NoFilenames: 
End Sub 
+0

"Hata Özgeçmişinde Sonraki" seçeneğinin uygun olmayan kullanımınız, "silmeRowsColumns", "ledgerSetup", vb. Gibi adlandırılan yordamlarda oluşan hata (lar) ı gizleyebilir. –

+0

'Hata Hatası '0'ını eklemeyi öneririm hemen * sonra * End If 'ifadesi. Bu, normal hata işlemeye devam eder ve diğer prosedürlerden herhangi birinde bulunan hataları tanımlamaya yardımcı olur. –

+0

Ayrıca, hatanın hangi satırda yükseldiğini ve aldığınız belirli bir hata mesajını açıklamayı düşünün. –

cevap

0

Her şeyi yaptım ve farklı şekilde düzeltdim. Ama yine de 10-20 dosyadan sonra bir hata ile. Mac makinemdeki sanal makineyi sanal makine olarak kullandığım için, neden microsoft ofisiyle macda denemediğimi düşündüm. Ve dizinin eğik çizgisini (kolonun geri dönüşü diye düşünmüştüm) ilginç bir şekilde değiştirmem gerekiyordu (ilginç bir şekilde geri dönüş olmalı diye düşündüm ama bu, vba'nın yaptığı gibi) ve çalıştıran bir dosya kaydetme konusunda uyardım, ama en azından 1000 tane yapabilirim. dosyaları kolayca dinlendirebilirim el ile kaydedebilirim. Ama gerçekten de vba motoru biraz daha yavaş çalışsa da, ama kimin umurunda olursa olsun, tüm dosyaları benim için yapmak için birkaç saatliğine bırakıyorum. Tüm yardımlarınız için teşekkürler. Mike evet ActiveWorkbook ve betik hakkında daha fazla şey öğrenmem gerekiyor. Bana söylediğin gibi yapmaya çalışacağım ama işim bitti. Teşekkürler