Excel VBA質問箱 IV

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

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


1583 / 13645 ツリー ←次へ | 前へ→

【73325】空ファイルがセーブされます 加文 12/12/20(木) 17:06 質問[未読]
【73326】Re:空ファイルがセーブされます UO3 12/12/20(木) 17:32 発言[未読]
【73327】Re:空ファイルがセーブされます 加文 12/12/20(木) 17:58 発言[未読]
【73328】Re:空ファイルがセーブされます UO3 12/12/20(木) 21:09 発言[未読]
【73330】Re:空ファイルがセーブされます 加文 12/12/21(金) 9:24 お礼[未読]

【73325】空ファイルがセーブされます
質問  加文  - 12/12/20(木) 17:06 -

引用なし
パスワード
   VBA初心者で、他の方の作成されたVBAを見よう見まねで、作成しています。
上手くいかずに困っておりますので、ご教授宜しくお願い申し上げます。

●したい事
CSVファイルでセーブしたい

●困っていること
空白しかないシートでセーブされてしまう

●作成した物

Workbooks(FileName).Activate

'他の場所にバックアップしているため、Cドライブに戻している 
ChDrive "C"
ChDir "C:\Documents and Settings\管理者\My Documents\データ登録用フォルダ"

Worksheets("登録").Activate
ActiveWorkbook.SaveAs FileName:=FileName & ".csv", FileFormat:=xlCSV _
  , CreateBackup:=False, Local:=True
ActiveWorkbook.Save

この結果、同じブック内に「FileName.csv」という新しい空白のシートが出来、
空白のCSVファイルが出来てしまいます。
行ないたいことは、「登録」シートの内容をCSVファイルにしたいのです。

ご教授、宜しくお願い申し上げます。

【73326】Re:空ファイルがセーブされます
発言  UO3  - 12/12/20(木) 17:32 -

引用なし
パスワード
   ▼加文 さん:

こんにちは

このコードが実行されるタイミングで 変数 FileName には、どういった文字列が
入っているのですか?

【73327】Re:空ファイルがセーブされます
発言  加文  - 12/12/20(木) 17:58 -

引用なし
パスワード
   ▼UO3 さん:
お世話になります。

>このコードが実行されるタイミングで 変数 FileName には、どういった文字列が
>入っているのですか?

ここには、『書店用マスターファイル』などのファイル名です。
「dim FileName As String」としています。

宜しくお願い申し上げます。

【73328】Re:空ファイルがセーブされます
発言  UO3  - 12/12/20(木) 21:09 -

引用なし
パスワード
   ▼加文 さん:

こんばんは

アップされたコードで、どのよな条件の下で説明のあった現象になるのか
いろいろ考えたのですが、・・・・

ちょっと気になるのは、

>ここには、『書店用マスターファイル』などのファイル名です。

これで、Workbooks(FileName).Activate としたとき、インデックスエラーにはなっていないのですか?
ともあれ、よく状況がわかりませんので、以下のコードは、このようにしたら大丈夫じゃないでしょうかと
いったものです。FileName には 書店用マスターファイル.xlsx(あるいは書店用マスターファイル.xls)
といったように拡張子付きで文字列が入っているという前提です。

(要件を推測して書いているところが多々あります。これは違うよということなら指摘願います)

Sub Sample()
  Dim myPath As String
  
  Workbooks(Filename).Worksheets("登録").Copy
  
  myPath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\データ登録用フォルダ\"
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Filename:=myPath & Split(Filename, ".")(0) & ".csv", FileFormat:=xlCSV _
    , CreateBackup:=False, Local:=True
  ActiveWorkbook.Close False
  Application.DisplayAlerts = True

'  Workbooks(Filename).Close False  'もし閉じるならこのコメントをはずす

End Sub

【73330】Re:空ファイルがセーブされます
お礼  加文  - 12/12/21(金) 9:24 -

引用なし
パスワード
   ▼UO3 さん:

おはようございます。

結論から言うと、上手くいきました。有り難うございました。

>これで、Workbooks(FileName).Activate としたとき、インデックスエラーにはなっていないのですか?
ここは、エラーにはなりません。.xls付きのファイルが入っています。


>  myPath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\データ登録用フォルダ\"

>  ActiveWorkbook.SaveAs Filename:=myPath & Split(Filename, ".")(0) & ".csv", FileFormat:=xlCSV _
>    , CreateBackup:=False, Local:=True


この使い方は勉強になります。といっても、まだ全然理解できておりませんが。
これだと、元のファイル自体をいじらずにCSVファイルが作れますので、賢いやり方ですね。今後、この方法を利用されて頂きます。

今回、有用なご指摘いただきまして有り難うございました。
今後とも、宜しくお願い申し上げます。

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