2016-04-23 17 views
0

UPDATEは:ActiveSheetにActiveWorkSheetを交換し、オブジェクトに必要なエラーを修正するようだが、今、このエラーを取得イム:オブジェクト必要なエラー:保存するファイル

'calendar2016-04-23.csv' cannot be accessed. 
The file may be read-only, or you may be trying to access a read-only location. Or, the server the document is stored on may not be responding. 

その後キャンセルした後、このエラーを取得する:

Run-time error '1004': 
SaveAs method of Worksheet class failed 

Excelでアクティブなワークシートを保存することに問題があります。私は2つの異なるCSVファイルに2枚を保存しようとしています。しかし、私は2つの主な問題に走っています

私は別々のcsvファイルにエクスポートしたいが、ソースファイルに残しておきたい。

私の全体のコードは

Sub prep() 
' 
' prep Macro 
' 

' 
    Columns("G:G").Select 
    ActiveWorkbook.Worksheets("1Input").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("1Input").Sort.SortFields.Add Key:=Range("G1"), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("1Input").Sort 
     .SetRange Range("A2:O9995") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 



    Columns("D:D").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE("":00 GMT"","""",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 
    Columns("I:I").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE(""(booster)"",""."",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 
    Columns("N:N").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE("" (A)"","""",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 


    Columns("A:A").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 
    Columns("K:K").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 

    Columns("M:M").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 


    Range("M2").Select 
    ActiveCell.FormulaR1C1 = "=left" 
    Range("M2").Select 
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-10],16)" 
    Range("N2").Select 
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-11],5)" 
    Range("M2:N2").Select 
    Selection.AutoFill Destination:=Range("M2:N1000"), Type:=xlFillDefault 
    Range("M2:N164").Select 
    Columns("B:B").Select 
    ActiveWorkbook.Worksheets("1Input").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("1Input").Sort.SortFields.Add Key:=Range("B1"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

    Range("O1").Select 
    ActiveCell.FormulaR1C1 = "Subject" 
    Range("P1").Select 
    ActiveCell.FormulaR1C1 = "Start Date" 
    Range("R1").Select 
    ActiveCell.FormulaR1C1 = "Arrive By" 
    Range("Q1").Select 
    ActiveCell.FormulaR1C1 = "Start Time" 
    Range("S1").Select 
    ActiveCell.FormulaR1C1 = "Description" 
    Range("U1").Select 
    ActiveCell.FormulaR1C1 = "Driver First Name" 

    Range("T1").Select 
    ActiveCell.FormulaR1C1 = "End Time" 


    Range("R2").Select 
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-16],5)" 

    Range("O2").Select 
    ActiveCell.FormulaR1C1 = _ 
     "=IF(ISBLANK(RC[-10]),"""",CONCATENATE(""Text: "",RC[-3],"" ::::: "",RC[4]))" 
    Range("P2").Select 
    ActiveCell.FormulaR1C1 = "=TODAY()" 
    Range("Q2").Select 
    ActiveCell.FormulaR1C1 = "=RC[-3]-""1:05""" 
    Range("R2").Select 
    ActiveCell.FormulaR1C1 = "=RC[-4]-""0:05""" 
    Range("T2").Select 
    ActiveCell.FormulaR1C1 = "=RC[-3]-""00:55""" 
    Range("U2").Select 
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-9],FIND("" "",RC[-9]&"" "")-1)" 

' 



    Columns("O:O").Select 
    Selection.NumberFormat = "m/d/yy" 


    Range("N2:T2").Select 
    Selection.AutoFill Destination:=Range("N2: T10000"), Type:=xlFillDefault 
    Range("N2:Z10000").Select 
    Columns("A:Z").EntireColumn.AutoFit 



    Columns("A:A").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 


' 
    Range("R2").Select 
    ActiveCell.FormulaR1C1 = _ 
     "=CONCATENATE(""Hi "",RC[2],"", Please arrive by "",TEXT(RC[-1],""hh:mm AM/PM""),"" for your next ride. Thank you."")" 
    Range("R2").Select 
    Selection.AutoFill Destination:=Range("R2:R10000"), Type:=xlFillDefault 
    Range("T2").Select 
    Selection.AutoFill Destination:=Range("T2:T10000"), Type:=xlFillDefault 

    Columns("I:J").Select 
    Selection.Delete Shift:=xlToLeft 

    Columns("L:L").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    With Selection 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlBottom 
     .WrapText = False 
     .Orientation = 0 
     .AddIndent = False 
     .ShrinkToFit = False 
     .MergeCells = False 
    End With 
    Selection.Merge 
    ExecuteExcel4Macro "PATTERNS(1,0,10,TRUE,2,4,0,0)" 


    Range("O:O").Activate 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 
    Columns("P:P").Select 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 
    Columns("R:R").Select 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 


    Rows("1:2").Select 
    Selection.Font.Bold = False 
    Selection.Font.Bold = True 


    Columns("M:S").Select 
    Selection.Cut 
    Sheets("CSV Export").Select 
    Range("A1").Select 
    ActiveSheet.Paste 

    Sheets("CSV Export").Select 
    ActiveWorkSheet.SaveAs _ 
    Filename:="/Users/Max/Desktop/Rides/Exported/calendar" _ 
    & Format(Date, "yyyy-mm-dd") & ".csv", _ 
    FileFormat:=xlCSVWindows 


    Columns("A:G").Select 
    Selection.Delete Shift:=xlToLeft 

    Sheets("1Input").Select 
    ActiveWorkSheet.SaveAs Filename:= _ 
     "/Users/Max/Desktop/Rides /Exported/rides.csv", FileFormat:=xlCSVWindows, _ 
     CreateBackup:=False 

    Cells.Select 
    Selection.Delete Shift:=xlUp 

End Sub 

とIM(ここでは、コードの下部にダウン)エラーを取得している:

Sheets("CSV Export").Select 
ActiveWorkSheet.SaveAs _ 
Filename:="/Users/Max/Desktop/Rides/Exported/calendar" _ 
& Format(Date, "yyyy-mm-dd") & ".csv", _ 
FileFormat:=xlCSVWindows 

とコードの両方のために練習イムは、次のとおりです。

Sheets("CSV Export").Select 
ActiveWorkSheet.SaveAs _ 
Filename:="/Users/Max/Desktop/Rides/Exported/calendar" _ 
& Format(Date, "yyyy-mm-dd") & ".csv", _ 
FileFormat:=xlCSVWindows 


Columns("A:G").Select 
Selection.Delete Shift:=xlToLeft 

Sheets("1Input").Select 
ActiveWorkSheet.SaveAs Filename:= _ 
    "/Users/Max/Desktop/Rides /Exported/rides.csv", FileFormat:=xlCSVWindows, _ 
    CreateBackup:=False 

ありがとうございます!

+0

Excelを実行するか、Webサイトに保存されているLinuxシステムを使用していますか? '\'ではなく '/'をパスに使用しているため、不思議です。また、あなたのパスは 'C:'や 'E:'や 'H:' ....などのドライブ文字で始まらないので、 'Dir'を使ってパスを検証したいかもしれません:' If Dir( "/ユーザー/最大/デスクトップ/乗り物/エクスポート/カレンダー/ ")= vbNullString Then MsgBox"そのパスは存在しません "。 – Ralph

+0

Im Macを使用しています。最初のマクロを記録したときにそのマクロが表示されたので、私はそれを実行していました。 –

答えて

0

私が見つけた解決がのおかげでした:ここにクリス・ブライソン:https://www.youtube.com/watch?v=hnsL_01bHbU

私は二マクロとしての私のメインのスクリプトと同じモジュールに彼のマクロを添付。その後、元のマクロからマクロを呼び出しました。最終的なスクリプトは次のとおりです。

Sub aprep() 
' 
' prep Macro 
' 

' 
ActiveSheet.SaveAs _ 
Filename:="/Users/Max/Desktop/Rides/Extractor/Exported/" & "Extract" & Format(Date, "yyyy-mm-dd") & ".csv" 

    Columns("G:G").Select 
    ActiveWorkbook.Worksheets("Rides").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Rides").Sort.SortFields.Add Key:=Range("G1"), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Rides").Sort 
     .SetRange Range("A2:O9995") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 



    Columns("D:D").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE("":00 GMT"","""",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 
    Columns("I:I").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE(""(booster)"",""."",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 
    Columns("N:N").Select 
    ExecuteExcel4Macro _ 
     "FORMULA.REPLACE("" (A)"","""",2,1,FALSE,FALSE,,FALSE,FALSE,FALSE,FALSE)" 


    Columns("A:A").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 
    Columns("K:K").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 

    Columns("M:M").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 


    Range("M2").Select 
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-10],16)" 
    Range("N2").Select 
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-11],5)" 
    Range("M2:N2").Select 
    Selection.AutoFill Destination:=Range("M2:N1000"), Type:=xlFillDefault 
    Range("M2:N164").Select 
    Columns("B:B").Select 
    ActiveWorkbook.Worksheets("Rides").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Rides").Sort.SortFields.Add Key:=Range("B1"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

    Range("O1").Select 
    ActiveCell.FormulaR1C1 = "Subject" 
    Range("P1").Select 
    ActiveCell.FormulaR1C1 = "Start Date" 
    Range("R1").Select 
    ActiveCell.FormulaR1C1 = "Arrive By" 
    Range("Q1").Select 
    ActiveCell.FormulaR1C1 = "Start Time" 
    Range("S1").Select 
    ActiveCell.FormulaR1C1 = "Description" 
    Range("U1").Select 
    ActiveCell.FormulaR1C1 = "Driver First Name" 

    Range("T1").Select 
    ActiveCell.FormulaR1C1 = "End Time" 


    Range("R2").Select 
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-16],5)" 


    Columns("T:T").Select 
    Selection.NumberFormat = "m/d/yy" 

    Range("O2").Select 
    ActiveCell.FormulaR1C1 = _ 
     "=IF(ISBLANK(RC[-10]),"""",CONCATENATE(""Text: "",RC[-3],"" ::::: "",RC[4]))" 
    Range("P2").Select 
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-4]),""."",TODAY())" 
    Range("Q2").Select 
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-12]),"""",RC[-3]-""1:05"")" 
    Range("R2").Select 
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-13]),"""",RC[-4]-""0:05"")" 
    Range("T2").Select 
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-15]),"""",RC[-3]-""00:55"")" 
    Range("U2").Select 
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-16]),"""",LEFT(RC[-9],FIND("" "",RC[-9]&"" "")-1))" 

' 



    Columns("P:P").Select 
    Selection.NumberFormat = "m/d/yy" 


    Range("N2:T2").Select 
    Selection.AutoFill Destination:=Range("N2: T10000"), Type:=xlFillDefault 
    Range("N2:Z10000").Select 
    Columns("A:Z").EntireColumn.AutoFit 



    Columns("A:A").Select 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlToLeft 


' 
    Range("R2").Select 
    ActiveCell.FormulaR1C1 = _ 
     "=IF(ISBLANK(RC[-16]),"""",CONCATENATE(""Hi "",RC[2],"", Please arrive by "",TEXT(RC[-1],""hh:mm AM/PM""),"" for your next ride. Thank you.""))" 
    Range("R2").Select 
    Selection.AutoFill Destination:=Range("R2:R10000"), Type:=xlFillDefault 
    Range("T2").Select 
    Selection.AutoFill Destination:=Range("T2:T10000"), Type:=xlFillDefault 

    Columns("I:J").Select 
    Selection.Delete Shift:=xlToLeft 

    Columns("L:L").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    With Selection 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlBottom 
     .WrapText = False 
     .Orientation = 0 
     .AddIndent = False 
     .ShrinkToFit = False 
     .MergeCells = False 
    End With 


    Range("O:O").Activate 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 
    Columns("P:P").Select 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 
    Columns("R:R").Select 
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM" 


    Rows("1:2").Select 
    Selection.Font.Bold = False 
    Selection.Font.Bold = True 


    Columns("M:S").Select 
    Selection.Cut 
    Sheets("Calendar").Select 
    Range("A1").Select 
    ActiveSheet.Paste 

Call Splitbook 

Call Clear 


End Sub 

Sub Splitbook() 
MyPath = ThisWorkbook.Path 
For Each sht In ThisWorkbook.Sheets 
sht.Copy 
ActiveSheet.Cells.Copy 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats 
ActiveSheet.SaveAs _ 
Filename:="/Users/Max/Desktop/Rides/Extractor/Exported/" & sht.Name & "_" & Format(Date, "yyyy-mm-dd") & ".csv" 
ActiveWorkbook.Close savechanges:=True 

Next sht 
End Sub 

Sub Clear() 
' 
' Clear Macro 
' 

' 
    Cells.Select 
    Selection.Delete Shift:=xlUp 
    Sheets("Rides").Select 
    Cells.Select 
    Selection.Delete Shift:=xlUp 
End Sub 

自身で追加ファイナル:

Call Splitbook 

Call Clear 


End Sub 

Sub Splitbook() 
MyPath = ThisWorkbook.Path 
For Each sht In ThisWorkbook.Sheets 
sht.Copy 
ActiveSheet.Cells.Copy 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats 
ActiveSheet.SaveAs _ 
Filename:="/Users/Max/Desktop/Rides/Extractor/Exported/" & sht.Name & "_" & Format(Date, "yyyy-mm-dd") & ".csv" 
ActiveWorkbook.Close savechanges:=True 

Next sht 
End Sub 

Sub Clear() 
' 
' Clear Macro 
' 

' 
    Cells.Select 
    Selection.Delete Shift:=xlUp 
    Sheets("Rides").Select 
    Cells.Select 
    Selection.Delete Shift:=xlUp 
End Sub 
関連する問題