Excel VBA質問箱 IV

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

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


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

【72202】空ファイル作成マクロ chantaro 12/6/19(火) 22:02 質問[未読]
【72203】Re:空ファイル作成マクロ ドカ 12/6/20(水) 8:09 発言[未読]
【72204】Re:空ファイル作成マクロ chan taro 12/6/20(水) 9:13 発言[未読]
【72206】Re:空ファイル作成マクロ UO3 12/6/20(水) 9:34 発言[未読]
【72207】Re:空ファイル作成マクロ chan taro 12/6/20(水) 11:13 お礼[未読]
【72205】Re:空ファイル作成マクロ UO3 12/6/20(水) 9:29 発言[未読]
【72208】Re:空ファイル作成マクロ chan taro 12/6/20(水) 11:17 お礼[未読]

【72202】空ファイル作成マクロ
質問  chantaro  - 12/6/19(火) 22:02 -

引用なし
パスワード
   やりたいことはエクセルのB2〜B*までにファイル名を記載してます。
そのファイル名の空ファイルを作成することです。
B列の内容の例は以下のとおり
B2 = 1-1_aaabbb1111.txt
B3 = 1-1_aaabbb1112.txt

作成するファイルはエクセルファイルと同じディレクトリに保存したいです。

以下のように作成しましたがどうもうまくいきません。
詳しい方がおりましたら助言いただけると助かります。

---ココから---
Sub ボタン1_Click()
  Dim intFileNum   As Integer
  Dim strFileName   As String
  Dim GYO       As Long
  Dim GYOMAX     As Long
  Dim IngREC     As Long
  
  intFileNum = FreeFile
  
  GYOMAX = Cells.SpecialCells(xlCellTypeLastCell).Row
  
  Do While Cells(GYOMAX, 2).Value = ""
    GYOMAX = GYOMAX - 1
  Loop
  
  GYO = 2
  
  Do Until GYO > GYOMAX
    strFileName = Cells(GYO, 2).Value
    Open strFileName For Output As #intFileNum
    Close #intFileNum
    
    MsgBox " 「" & strFileName & "」" & " create"
    
    GYO = GYO + 1
    IngREC = IngREC + 1
  Loop
  
  MsgBox " ファイル出力が完了しました。 " & vbCr & _
  "レコード件数=" & IngREC & "件", vblnformation, cnsTITLE

End Sub

---ココまで---

【72203】Re:空ファイル作成マクロ
発言  ドカ  - 12/6/20(水) 8:09 -

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

コピペして、実行したところ期待通りに動きましたよ。
報告まで。

win7、excel 2003にて

【72204】Re:空ファイル作成マクロ
発言  chan taro  - 12/6/20(水) 9:13 -

引用なし
パスワード
   ▼ドカ さん:
>▼chantaro さん
>
>コピペして、実行したところ期待通りに動きましたよ。
>報告まで。
>
>win7、excel 2003にて
ドカさん。
コメントありがとうございます。

確かに当初は期待通りに動作をします。
しかし、マクロを組んだエクセルを別のフォルダにコピーや移動して
動作させようとすると、マクロのエラーにはなりませんが
空ファイルが作成されません。

【72205】Re:空ファイル作成マクロ
発言  UO3  - 12/6/20(水) 9:29 -

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

おはようございます

どう、うまくいかないのかがわからないのですがドカさんが試して見られた結果はOKということなので
具体的に、どこが思ったようにいかないのかを説明されてはいかがでしょう。

ですので、回答ではなく気が付いた点のみ。

おそらく Option Explicit を指定しておられないのでエラーにはなっていないのでしょうけど
vblnformation の 3ケタ目、小文字のエルですかね? vbInformation が正しいスペル。
あとは、cnsTITLE この定義が見当たらないのですが、これはモジュールレベルのコンスタントなんでしょうか?

  GYOMAX = Cells.SpecialCells(xlCellTypeLastCell).Row

SpecialCellsに指定する定数のなかで、このxlCellTypeLastCellは、ちょっとマギレがあるというか
厄介なことがあります。実行時にはデータがなく空白でも、かってデータがあったところは、ここで認識されてしまいます。

Do While Cells(GYOMAX, 2).Value = ""
    GYOMAX = GYOMAX - 1
Loop

あるセルから上に、空白ではないセルを取得するコードでしょうし、この形のコードはよく見かけます。
ただ、もう少し別のコードが一般的かなとも思います。

要は、B2からB列のデータ最終行までのループでしょうから、通常は以下のいずれかのコードを書くことが多いのでは?
(以下では式があり、空白のセルも対象になります。式があって空白のものは空白とみなすなら、それはそれで書き方はあります)

Sub Sample1()
  Dim z As Long
  Dim i As Long
  
  z = Range("B" & Rows.Count).End(xlUp).Row
  
  For i = 2 To z
    MsgBox Cells(i, 2).Value
  Next
  
End Sub

Sub Sample2()
  Dim c As Range
  
  For Each c In Range("B2", Range("B" & Rows.Count).End(xlUp))
    MsgBox c.Value
  Next
  
End Sub

【72206】Re:空ファイル作成マクロ
発言  UO3  - 12/6/20(水) 9:34 -

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

>しかし、マクロを組んだエクセルを別のフォルダにコピーや移動して
>動作させようとすると、マクロのエラーにはなりませんが
>空ファイルが作成されません。


Open strFileName For Output As #intFileNum

これをパス明記されてはいかがでしょう。

Open ThisWOrkbook.Path & "\" & strFileName For Output As #intFileNum

【72207】Re:空ファイル作成マクロ
お礼  chan taro  - 12/6/20(水) 11:13 -

引用なし
パスワード
   パス明記で無事に動作しました。
これが抜けてました。
非常に助かりました。ありがとうございます。

【72208】Re:空ファイル作成マクロ
お礼  chan taro  - 12/6/20(水) 11:17 -

引用なし
パスワード
   コメントありがとうございます。
頂いた内容も反映して使用してみます。
ありがとうございます。

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