मैं अपने थीसिस के लिए एक्सेल में मैक्रो प्रोग्राम करने की कोशिश कर रहा हूं। मुझे एक फ़ोल्डर में एकाधिक .xlsx फ़ाइलें मिलीं, जिनमें से प्रत्येक में 9 कॉलम (ए-आई) की एक तालिका और पंक्तियों की एक अलग संख्या है। मैं प्रत्येक फ़ाइल को स्वचालित रूप से खोलना चाहता हूं, प्रत्येक कॉलम के नीचे कॉलम का योग जोड़ना और बाद में फ़ाइल को सहेजना चाहता हूं।

मुझे .csv फ़ाइलों के साथ एक फ़ोल्डर चुनने के लिए स्टैक ओवरफ़्लो में एक कोड मिला है जो स्वचालित रूप से खोला जाता है और उसी फ़ोल्डर में .xlsx फ़ाइलों के रूप में सहेजा जाता है। मैंने अपने उद्देश्य के लिए कोड को संशोधित करने का प्रयास किया। केवल एक चीज जो मैंने हासिल की, वह थी कोड को अब तक बदलना ताकि मेरे फोल्डर की .xlsx फाइलें खुल सकें। उस समय से मुझे नहीं पता कि कैसे आगे बढ़ना है क्योंकि मुझे वीबीए के साथ कोई अनुभव नहीं है। GetFolder() एक निश्चित कार्य है जो मुझे एक फ़ोल्डर के लिए ब्राउज़ करने और उसका पथ निकालने की अनुमति देता है।

निजी उप कमांडबटन1_क्लिक करें ()

Dim myFolder As String
Dim getBook As String
Dim myCSVFile As String
Dim LastRow As Long


Application.DisplayAlerts = False
myFolder = GetFolder()
myXLSXFile = Dir(myFolder & "\*.xlsx")

Do While myXLSXFile <> ""
    Workbooks.Open Filename:=myFolder & "\" & myXLSXFile
    getBook = ActiveSheet.Name
    ActiveSheet.Name = "Sheet1"
    ActiveWorkbook.SaveAs Filename:=myFolder & Chr(92) & getBook, FileFormat:=51
    ActiveWorkbook.Close False
    myXLSXFile = Dir
Loop

अंत उप

0
Schippi 5 सितंबर 2019, 11:56

1 उत्तर

सबसे बढ़िया उत्तर

एसओ में आपका स्वागत है:

आपको कॉलम का योग करने के लिए आप कुछ इस तरह का उपयोग कर सकते हैं

SumA = Application.WorksheetFunction.Sum(columns("A:A"))

और इसे प्रत्येक कॉलम के अंत में रखने के लिए आप:

1 कॉलम की अंतिम पंक्ति ढूंढें

lastrow = ActiveSheet.Cells(sht.Rows.Count, "A").End(xlUp).Row

2 योग मान को लास सेल कॉलम में संग्रहित करें

Cells(lastrow,"A").value = SumA 

आखिरी चीज जो आपको करनी है वह यह है कि इसे सभी कॉलमों के लिए करने के लिए एक लूप लगाएं और सभी फाइलों को ब्राउज़ करें:

संपादित कोड

Private Sub CommandButton1_Click()

Dim directory As String, fileName As String, sheet As Worksheet, i     As Integer, j As Integer
Application.ScreenUpdating = False
directory = "C:\Users\ba-sc\Desktop\Fiji output\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""

Workbooks.Open (directory & fileName)

Set sht = Workbooks(fileName).Worksheets("Sheet1")

LastColumn = Workbooks(fileName).Worksheets("Sheet1").Cells(1,Workbooks(fileName).Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column

For i = 1 To LastColumn

SumA = Application.WorksheetFunction.Sum(Workbooks(fileName).Worksheets("Sheet1").Columns(i))
MsgBox SumA
lastrow = ActiveSheet.Cells(Workbooks(fileName).Worksheets("Sheet1").Rows.Count, i).End(xlUp).Row

Workbooks(fileName).Worksheets("Sheet1").Cells(lastrow + 1, i).Value = SumA

Next

'now save and close this workbook

Workbooks(fileName).Close SaveChanges:=True

fileName = Dir()

Loop

End Sub

आउटपुट:

enter image description here

0
marc_s 17 फरवरी 2020, 23:26