אקסל | ייבוא ערכים מחוברת עבודה
-
@פלורידה הפונקציה הבאה מעתיקה טווח של תאים מכל הגליונות בחוברת הפעילה, ומדביקה אותם ללא עיצוב בחוברת אחרת.
Public Sub CopyAllSheets(targetWorksheet as string, selectedRange As String) Dim source As Workbook, target As Workbook Dim sh As Worksheet Set source = ThisWorkbook Set target = Workbooks.Open(targetWorksheet) For Each sh In source.Sheets sh.Range(selectedRange).Copy target.Worksheets(sh.Name).Range(selectedRange).PasteSpecial Paste:=xlPasteValues Next sh End Sub
בהרצה אתה צריך לספק את שם חוברת היעד, ואת הטווח להעתקה, כך:
CopyAllSheets "d:\Temp\target.xlsx", "A:BB"
הקוד הזה די ברוטאלי, שים לב שאין כאן שום בדיקות שגיאות, ואם לא נמצאה החוברת, או גליון תואם ביעד, הקוד יתקע.
-
-
@פלורידה אמר באקסל | ייבוא ערכים מחוברת עבודה:
א. ניתן לעשות את זה בנתיב שאינו קבוע?
לדוג'.לקובץ 'גיבוי' שבאותו נתיב שבו נמצא הקובץ המקורי?
ב. האם אפשר לעשות גם ייבוא באותו אופן.
(אני מנחש שאתה כבר מבין בדיוק מה אני זומם...)על הכל התשובה היא כן, חוץ מהמשפט האחרון. אולי תשתף מה בדיוק אתה זומם?
-
@odeddvir כפי הנראה אני מתכוון לפרסם גרסא/ות יותר מעודכנות.
כמו למשל גרפים וכו'...הבעיה שבהתקנה התוכנה דורסת את הגירסא הקודמת...
הרעיון שלי הוא שבהתקנה יותקן קובץ גיבוי, ובתכנה יהיה לחצן גיבוי (כבר יש... ) ולחצן שחזור, כלומר שישאב את הנתונים מקובץ הגיבוי.
(כמובן שאת קובץ הגיבוי נתקין באופן שהוא לא דורס את הגירסא הקודמת שלו, אלא מדלג אם יש...)
-
@פלורידה הבנתי.
פשוט נשנה את הקוד קצת:Private Sub CopyAllSheets(source As Workbook, target As Workbook, selectedRange As String) Dim sh As Worksheet For Each sh In source.Sheets sh.Range(selectedRange).Copy target.Worksheets(sh.Name).Range(selectedRange).PasteSpecial Paste:=xlPasteValues Next sh End Sub Public Sub BackupTo(targetWorkbook As String, selectedRange As String) CopyAllSheets ThisWorkbook, Workbooks.Open(targetWorkbook), selectedRange End Sub Public Sub RestoreFrom(sourceWorkbook As String, selectedRange As String) CopyAllSheets Workbooks.Open(sourceWorkbook), ThisWorkbook, selectedRange End Sub
כעת כדי לגבות תריץ:
BackupTo ActiveWorkbook.Path & "\גיבוי.xlsx", "A:BB"
וכדי לשחזר תריץ:
RestoreFrom ActiveWorkbook.Path & "\גיבוי.xlsx", "A:BB"
-
-
@odeddvir כלומר אם אני יניח בקוד את הטווח הרלוונטי (עמודות 2-5 בגליונות ) הנ"ל, לא תהיה בעיה בשחזור...
או לחילופין, אם אני יפתח את הנעילה בכל התאים והגליונות לפני שהוא משחזר פנימה (על ידי vba) לא תהיה בעיה. רק הבעיה תהיה להחזיר את כל הנ"ל בפקודה אחת.
-
-
-
-
-