|    | 
     INAさん度々ありがとうございます。 
まずは、エラーの分析をしてみました。 
まずは、下記のコードは、 
 
変数myPathが、GetMyDocumentsPath & "\CD\CDのCSV"までのフォルダ名で、 
GetMyDocumentsPathが、「C:\Documents and Settings\ID\My Documents」  
までのパスを取ってくるらしい変数で、コードは難しくて理解できなかったのですが、別SubでPublic Functionから持ってきているものです。 
 
そして、CSVに変換をして、保存をするようにしているのですが、一回の作業(EXCELで保存せずに、一回の作業でCSVに変換した場合)は、うまくいくのですが、例えば、EXCELを一回別のフォルダに保存して、そこから、このマクロの入っているEXCELを起動させて動かすと、パスが違ってエラーがでてしまうと表示されます。 
 
なので、保存する際に「myPathと、ファイル名」だけで保存したいのですが、ファイル名にパスがついてくるために、myPath+ファイルのパスでダブってしまうために、「-56」で減らしてから、保存するようにしていたのですが・・・・結局は、それじゃ対応策にならなくなってしまい・・・・・  
 
わかりにくい文章でしたが、どうしていいかわからないので、本当に困っているので、解決法を教えて頂けないでしょうか? 
 
Sub PerfectSave() 
  Dim Cmax As Integer, Rmax As Long, CC As Integer, RR As Long 
  Dim Cfile As String, DC As String 
  Dim ws As Worksheet 
  Set ws = ActiveSheet '現在表示中のシートが対象 
  Dim myFileName As String 
  Dim myPath As String 
  myPath = GetMyDocumentsPath & "\CD\CDのCSV" 
 
  DC = Chr(34) '" 
  'NewFile 
 
On Error Resume Next 
  With ws.Parent 
     '保存されたブックの時はブックと同じフォルダに 
     Cfile = .FullName 
     Cfile = Right(Cfile, Len(Cfile) - 56) 
     Cfile = myPath & Left(Cfile, Len(Cfile$) - 3) & "csv" 
  End With 
  Debug.Print Cfile 
If Err.Number = 5 Then 
 MsgBox "CSVを読み込んでから実行してください" 
 Exit Sub ' ←もしくは End 
End If 
On Error GoTo 0 
 
  '出力範囲 
  Application.EnableEvents = False 
   
  ActiveSheet.Unprotect 
  Rows(1).Delete 
  With Selection.CurrentRegion 
   Cmax = .Cells(.Count).Column 
   Rmax = .Cells(.Count).Row 
  End With 
   
  With ws 
   Open Cfile For Output As #2 
     For RR = 1 To Rmax 
      For CC = 1 To Cmax 
        If CC > 1 Then Print #2, ","; 
        '数字は”でくくらない場合などはここで分岐 
        Print #2, Chr(34) & .Cells(RR, CC).Value & Chr(34); 
      Next 
      Print #2, "" '改行 
     Next 
   Close #2 
   Application.DisplayAlerts = False 
   Application.Quit 
   Application.DisplayAlerts = True 
  End With 
 
  Set ws = Nothing 
   
 
End Sub 
 
 | 
     
    
   |