मैं वर्तमान में वर्कशीट को एक अलग फ़ाइल के रूप में सहेजने के लिए निम्नलिखित वीबीए का उपयोग कर रहा हूं, हालांकि यह वर्तमान फ़ोल्डर के बजाय वर्कबुक में मौजूद मेरे दस्तावेज़ फ़ोल्डर में सहेजता है।

मैं जो कुछ भी जोड़ सकता हूं उस पर मैं सहायता ढूंढ रहा हूं ताकि यह उसी फ़ोल्डर में सहेजा जा सके क्योंकि फ़ाइल पहले से ही है। मैं फ़ाइलपथ को हार्डकोड नहीं कर सकता क्योंकि यह हर महीने बदल जाएगा।

Sub SavePlan()
Dim Fname As String
Fname = Sheets("Main").Range("C6").Value
Sheets("Main").Copy
With ActiveWorkbook
    .SaveAs Filename:=Fname
    .Close
End With
End Sub

अग्रिम में धन्यवाद

1
eagerbeaver 26 जिंदा 2022, 20:41
वर्तमान निर्देशिका प्राप्त करने के लिए activeworkbook.path का उपयोग करें, फिर इसमें \ और fname जोड़कर स्ट्रिंग बनाएं (मान लें कि आप विंडोज़ में काम कर रहे हैं)
 – 
Chris Strickland
26 जिंदा 2022, 20:43

3 जवाब

SaveAs को सहेजने के लिए पूर्ण पथ की तलाश है, इसलिए सक्रिय कार्यपुस्तिका में निर्देशिका प्राप्त करने के लिए ActiveWorkbook.Path का उपयोग करें, फिर इसमें \ और Fname संलग्न करें (मान लें कि आप विंडोज़ में काम कर रहे हैं)।

Sub SavePlan()

  Dim Fname As String
  Fname = Sheets("Main").Range("C6").Value
  
  Sheets("Main").Copy
  With ActiveWorkbook
    .SaveAs Filename := ActiveWorkbook.Path & "\" & Fname
    .Close
    End With

End Sub
0
Chris Strickland 26 जिंदा 2022, 20:48
आपको फ़ाइलपथ ThisWorkbook से प्राप्त करना है, ActiveWorkbook से नहीं। एक बार जब आप "मुख्य" शीट की एक प्रति बना लेते हैं, वह सक्रिय कार्यपुस्तिका है, और इसमें वास्तविक .Path नहीं है (क्योंकि यह स्पष्ट रूप से अभी तक सहेजा नहीं गया है)।
 – 
BigBen
26 जिंदा 2022, 22:08
हम्म, मेरा मानना ​​है कि मैंने कोड में हमेशा ActiveWorkbook का उपयोग किया है, इस बात को ध्यान में रखते हुए कि आपको यह सुनिश्चित करना होगा कि सक्रिय वही है जो आप सोचते हैं। हो सकता है कि मुझे अपनी कुछ दिनचर्या की जाँच करनी चाहिए और देखें कि क्या मुझसे गलती हुई है।
 – 
Chris Strickland
26 जिंदा 2022, 22:11
आह, जब मैं अपना बना रहा था तब आपने अपनी टिप्पणी संपादित की थी
 – 
Chris Strickland
26 जिंदा 2022, 22:11
Sub SavePlan()

    Dim Fname As String
    With Sheets("Main")
        Fname = .Parent.Path & "\" & .Range("C6").Value
        .Copy
    End With
    
    With ActiveWorkbook
        .SaveAs Filename:=Fname
        .Close
    End With

End Sub
0
CDP1802 26 जिंदा 2022, 21:08

एक नई कार्यपुस्तिका में बैकअप वर्कशीट

Option Explicit

Sub SavePlan()
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim sws As Worksheet: Set sws = wb.Worksheets("Main")
    
    Dim FolderPath As String: FolderPath = wb.Path
    Dim dFileName As String: dFileName = sws.Range("C6").Value
    Dim dFilePath As String
    dFilePath = FolderPath & Application.PathSeparator & dFileName
    
    sws.Copy ' copy to a new (destination) workbook
    
    Dim dwb As Workbook: Set dwb = Workbooks(Workbooks.Count)
    
    Application.DisplayAlerts = False ' overwrite without confirmation
    dwb.SaveAs Filename:=dFilePath
    Application.DisplayAlerts = True
    
    dwb.Close SaveChanges:=False

    MsgBox "Worksheet backed up.", vbInformation

End Sub
0
VBasic2008 26 जिंदा 2022, 21:21