אקסל | ייבוא ערכים מחוברת עבודה
-
אני רוצה לייבא ערכים בלבד ללא העיצוב מחוברת עבודה x לחוברת עבודה y
האם אפשרי? וכיצד?
-
@odeddvir אמר באקסל | ייבוא ערכים מחוברת עבודה:
תעתיק את כל הערכים,
כיצד מעתיקים את כל הערכים מחוברת עבודה1 לחוברת עבודה2 ?
-
@פלורידה הפונקציה הבאה מעתיקה טווח של תאים מכל הגליונות בחוברת הפעילה, ומדביקה אותם ללא עיצוב בחוברת אחרת.
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 אמר באקסל | ייבוא ערכים מחוברת עבודה:
את שם חוברת היעד
א. ניתן לעשות את זה בנתיב שאינו קבוע?
לדוג'.לקובץ 'גיבוי' שבאותו נתיב שבו נמצא הקובץ המקורי?
ב. האם אפשר לעשות גם ייבוא באותו אופן.
(אני מנחש שאתה כבר מבין בדיוק מה אני זומם...)
-
@פלורידה אמר באקסל | ייבוא ערכים מחוברת עבודה:
א. ניתן לעשות את זה בנתיב שאינו קבוע?
לדוג'.לקובץ 'גיבוי' שבאותו נתיב שבו נמצא הקובץ המקורי?
ב. האם אפשר לעשות גם ייבוא באותו אופן.
(אני מנחש שאתה כבר מבין בדיוק מה אני זומם...)על הכל התשובה היא כן, חוץ מהמשפט האחרון. אולי תשתף מה בדיוק אתה זומם?
-
@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) לא תהיה בעיה. רק הבעיה תהיה להחזיר את כל הנ"ל בפקודה אחת.
-
@odeddvir אמר באקסל | ייבוא ערכים מחוברת עבודה:
אני מניח שחלק מהגליון נעול לשינויים, ולכן השחזור לא מצליח.
ניסיתי על גליון חלק ונתן לי את אותה השגיאה...
-
-
-
-
-
12/20