עזרה קטנה בקוד מאקרו - אקסל
-
שלום.
יש לי המון קבצי אקסל (כ-280 קבצים) ששמורים בפורמט csv.
אני צריך להמיר את כולם לפורמט רגיל (xlsx.)לעבור אחד אחד ולעשות "שמירה בשם" יקח לי כמה ימים.
אני מנסה ליצור פקודת מאקרו שתעשה את זה לבד:
ActiveWorkbook.SaveAs
- "שמירה בשם"
FileFormat:=51
- בחירת פורמט xlsx.
המאקרו עובד מעולה
הבעיה היא, שהוא שומר את הקובץ ב"המסמכים שלי" במקום באותה תיקיה של הקובץ.
כיוון שהקבצים מקוטלגים כל אחד בתיקיה אחרת, זה לא עוזר לי.איך אני כותב קוד ששומר את הקובץ החדש בתיקיה הנוכחית שבה נמצא הקובץ הקודם?
אגב, כשאני מנסה לבצק "הקלטה" - זה גם לא טוב, כי הוא מקליט לי בעצם את הנתיב הנוכחי, ואני צריך שהמאקרו יהיה תואם לכל הקבצים שמצויים בנתיב תיקיה אחר.
-
@מטעמים תמחק את השורה הבודדת ותדיבק במקומה את הקוד הזה:
Dim xFd As FileDialog Dim xSPath As String Dim xCSVFile As String Dim xWsheet As String Application.DisplayAlerts = False Application.StatusBar = True xWsheet = ActiveWorkbook.Name Set xFd = Application.FileDialog(msoFileDialogFolderPicker) xFd.Title = "Select a folder:" If xFd.Show = -1 Then xSPath = xFd.SelectedItems(1) Else Exit Sub End If If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\" xCSVFile = Dir(xSPath & "*.csv") Do While xCSVFile <> "" Application.StatusBar = "Converting: " & xCSVFile Workbooks.Open Filename:=xSPath & xCSVFile ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), 51 ActiveWorkbook.Close Windows(xWsheet).Activate xCSVFile = Dir Loop Application.StatusBar = False Application.DisplayAlerts = True
תפעיל עם F5 בעוד הסמן על אחת השורות שהדבקת.
זה יפתח לך תיבת בחירה לאיתור התיקיה וזהו.
מקור (עם שני שינויים קטנים לXLSX):
https://www.extendoffice.com/documents/excel/4615-excel-batch-convert-csv-to-xls-xlsx.html -
למרות שנעזרתי רבות במאקרו שהבאת כאן לעיל, עדיין, בשביל קובץ בודד שחוברת העבודה שלו פתוחה חיפשתי פיתרון.
(כיוון שהנושא נפתח כאן אני משתף אותו למקרה ומאן דהו יחפש ג"כ תשובה לשאלה הפותחת של האשכול)
Sub Macro2() ' שמירה בשם, אותו שם, אותו נתיב קובץ, החלפת שם הסיומת, החלפת הפורמט ActiveWorkbook.SaveAs Replace(ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, ".csv", ".xlsx"), 51 End Sub