Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12638 / 13646 ツリー ←次へ | 前へ→

【9430】エラーメッセージを出す テーブル 03/12/4(木) 10:35 質問
【9434】Re:エラーメッセージを出す INA 03/12/4(木) 11:04 回答
【9441】Re:エラーメッセージを出す テーブル 03/12/4(木) 11:57 お礼
【9463】Re:エラーメッセージを出す テーブル 03/12/4(木) 16:30 質問
【9464】Re:エラーメッセージを出す INA 03/12/4(木) 16:46 回答
【9469】Re:エラーメッセージを出す テーブル 03/12/4(木) 17:20 質問
【9471】Re:エラーメッセージを出す INA 03/12/4(木) 17:35 回答
【9474】Re:エラーメッセージを出す テーブル 03/12/4(木) 18:19 お礼

【9430】エラーメッセージを出す
質問  テーブル  - 03/12/4(木) 10:35 -

引用なし
パスワード
   こんにちわ。
先日下記をりんさんに教えて頂いたのですが(Right......-56は私が加えた物で、違いますが)、
ここで、エラー5の「プロシージャー、因数が不正です」が出た場合に、
「〜〜〜を実行してください」っとメッセージを出して、マクロをそこで停止したいのですが・・・・・ ご教授して頂けないでしょうか
  With ws.Parent
     '保存されたブックの時はブックと同じフォルダに
     Cfile = .FullName
     Cfile = Right(Cfile, Len(Cfile) - 56)
     Cfile = myPath & Left(Cfile, Len(Cfile$) - 3) & "csv"
  End With

【9434】Re:エラーメッセージを出す
回答  INA  - 03/12/4(木) 11:04 -

引用なし
パスワード
   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

if err.number = 5 then
 msgbox "〜〜〜を実行してください"
 Exit Sub ' ←もしくは End
end if

on error goto 0

かな?

【9441】Re:エラーメッセージを出す
お礼  テーブル  - 03/12/4(木) 11:57 -

引用なし
パスワード
   INAさん。こんにちわ。いつもお世話になっております。
エラーメッセージしっかりと出ました!!どうもありがとうございました。

【9463】Re:エラーメッセージを出す
質問  テーブル  - 03/12/4(木) 16:30 -

引用なし
パスワード
   すいません・・・・追加質問です。
下記のコードで、
Cfile = Right(Cfile, Len(Cfile) - 56)←の「-56」が、「-63」の場合もあるのですが、こういう場合に、「-63」にも対応するコードってどうすればいいんでしょうか・・・・どうかよろしくお願いたします。


>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
>
>if err.number = 5 then
> msgbox "〜〜〜を実行してください"
> Exit Sub ' ←もしくは End
>end if
>
>on error goto 0
>
>かな?

【9464】Re:エラーメッセージを出す
回答  INA  - 03/12/4(木) 16:46 -

引用なし
パスワード
   >「-56」が、「-63」の場合もあるのですが

このときの条件は何でしょうか?

なにを基準に 56 と 63 を使い分けるのかが重要です。

【9469】Re:エラーメッセージを出す
質問  テーブル  - 03/12/4(木) 17:20 -

引用なし
パスワード
   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

【9471】Re:エラーメッセージを出す
回答  INA  - 03/12/4(木) 17:35 -

引用なし
パスワード
   > Cfile = .FullName
 ↓
Cfile = .Name

でいかがでしょうか?

【9474】Re:エラーメッセージを出す
お礼  テーブル  - 03/12/4(木) 18:19 -

引用なし
パスワード
   INAさん。どうもありがとうございました。本当に困っていたので、感激です!

>> Cfile = .FullName
> ↓
> Cfile = .Name
>
>でいかがでしょうか?

12638 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free