Excel VBA質問箱 IV

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

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


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

【74273】CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/13(月) 11:32 質問[未読]
【74274】Re:CSVファイルの読み込みの繰り返し UO3 13/5/13(月) 16:26 発言[未読]
【74275】Re:CSVファイルの読み込みの繰り返し UO3 13/5/13(月) 16:55 発言[未読]
【74279】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/13(月) 19:30 回答[未読]
【74282】Re:CSVファイルの読み込みの繰り返し UO3 13/5/13(月) 21:12 発言[未読]
【74283】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/13(月) 22:26 質問[未読]
【74284】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/14(火) 0:02 質問[未読]
【74287】Re:CSVファイルの読み込みの繰り返し UO3 13/5/14(火) 7:56 発言[未読]
【74289】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/14(火) 11:14 発言[未読]
【74290】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/14(火) 11:31 発言[未読]
【74291】Re:CSVファイルの読み込みの繰り返し UO3 13/5/14(火) 18:12 発言[未読]
【74292】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/14(火) 20:30 発言[未読]
【74294】Re:CSVファイルの読み込みの繰り返し UO3 13/5/15(水) 10:07 発言[未読]
【74296】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/15(水) 16:40 発言[未読]
【74297】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/15(水) 19:02 発言[未読]
【74298】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/15(水) 19:15 発言[未読]
【74299】Re:CSVファイルの読み込みの繰り返し UO3 13/5/15(水) 21:48 発言[未読]
【74300】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/15(水) 21:53 発言[未読]
【74301】Re:CSVファイルの読み込みの繰り返し UO3 13/5/16(木) 6:42 発言[未読]
【74302】Re:CSVファイルの読み込みの繰り返し Ib(初心者) 13/5/16(木) 10:59 お礼[未読]

【74273】CSVファイルの読み込みの繰り返し
質問  Ib(初心者)  - 13/5/13(月) 11:32 -

引用なし
パスワード
   初めまして。初心者で至らないところもあると思いますが質問させていただきます。

元のデータを入れれば、いろいろな計算を自動で行うブックを作ったのですが、
データが何種類もあるため、データを読み込んで保存するマクロを組みたいと考えました。

今組んだ段階のものは、
まずCSVを読み込む→貼り付けたい位置のセルをクリアする→データをコピーする→
クリアした位置に張り付ける→指定した位置のセルの名前でファイルを新規保存する
です。

しかし、同じCSVデータに複数の種類のものが入ってしまっているため、
1つのデータを読み込んだら自然と分けて保存してくれるようにしたいのです。
(ex: A1〜R272と、A273〜R543をそれぞれ別のブックで保存する)

「貼り付けたい位置のセルをクリアする→データをコピーする→
クリアした位置に張り付ける→指定した位置のセルの名前でファイルを新規保存する」
の部分をfunctionでどうにかしようとしたのですが、うまくいかないため、困っています。

<作った繰り返しなしの文>
Sub 円楕円2_Click()
Dim strFileName As String

' オープンするCSVファイルのフォルダを C:\ として
' ファイルオープンのダイアログを開く
ChDir ("C:\")
strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
If (strFileName <> "False") Then
' ファイル名が存在しない場合は抜ける
If (Trim(Dir(strFileName)) = "") Then
Call MsgBox("ファイルが見つかりません", vbOKOnly, "確認")
Else

'
' コピー先の範囲をクリア
ThisWorkbook.Worksheets("データ入力場所").Range("A3:R273").ClearContents


' 該当CSVファイルを新規BOOKとして読込んで開く
'
' コピーペースト
Workbooks.Open Filename:=strFileName
ActiveSheet.Range("A1:R272").Copy _
Destination:=ThisWorkbook.Worksheets("データ入力場所").Range("A3")

' コピー後、CSVファイルを閉じる
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
End If
End If

' book新規保存
Dim セル内容, パス名 As String
セル内容 = Range("B4").Value ' アクティブセルの内容をファイル名として保存。
If セル内容 = "" Then Exit Sub
パス名 = "C:\Users" ' 保存場所
ActiveWorkbook.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm"

End Sub


<試したこと>
・コピペ部分と保存部分を別々のファンクションで作ってみること
・CSVを閉じる部分を最後に持ってきて、その前の部分をファンクションで作る
→失敗


よろしくお願いいたします。

【74274】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/13(月) 16:26 -

引用なし
パスワード
   ▼Ib(初心者) さん:

こんにちは

回答の前段階として。
アップされたコードを、そのまま【インデント】をつけて書きますと以下になります。

Sub 円楕円2_Click()

  Dim strFileName As String
  Dim セル内容, パス名 As String
  
  ' オープンするCSVファイルのフォルダを C:\ として
  ' ファイルオープンのダイアログを開く
  ChDir ("C:\")
  strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
  If (strFileName <> "False") Then
  ' ファイル名が存在しない場合は抜ける
    If (Trim(Dir(strFileName)) = "") Then
      Call MsgBox("ファイルが見つかりません", vbOKOnly, "確認")
    Else
    
      '
      ' コピー先の範囲をクリア
      ThisWorkbook.Worksheets("データ入力場所").Range("A3:R273").ClearContents
      
      
      ' 該当CSVファイルを新規BOOKとして読込んで開く
      '
      ' コピーペースト
      Workbooks.Open Filename:=strFileName
      ActiveSheet.Range("A1:R272").Copy _
      Destination:=ThisWorkbook.Worksheets("データ入力場所").Range("A3")
      
      ' コピー後、CSVファイルを閉じる
      ActiveWorkbook.Saved = True
      ActiveWorkbook.Close
    End If
  End If
  
  ' book新規保存
  セル内容 = Range("B4").Value ' アクティブセルの内容をファイル名として保存。
  If セル内容 = "" Then Exit Sub
  パス名 = "C:\Users" ' 保存場所
  ActiveWorkbook.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm"

End Sub

●最後の新規保存のところですが、キャンセルボタンをおされた時にも実行されますね。
 また、ファイルが存在しないときも(後述しますが、このケースはありません)コード上は
 実行されることになっていますね。
●GetOpenFileName ダイアログでは、確かに、ファイル名を操作者が変更することはできますが
 存在しないファイル名だった場合 GetOpenFileName ダイアログ内でエラーで拒否されますので
 実際には、存在するファイル名のみが取得されます。ですから DIRでの存在チェックは不要です。

【74275】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/13(月) 16:55 -

引用なし
パスワード
   ▼Ib(初心者) さん:

追加質問です。
最初の領域をコピペしたブック名が A4 に記載されているとして
2番目、3番目の領域で作成するブックのブック名は、どこに記載されていますか?

また、このA4 等はマクロブックの、どのシートのA4 ですか?
(ボタンクリック起動でしょうから、アクティブシートですね?)

【74279】Re:CSVファイルの読み込みの繰り返し
回答  Ib(初心者)  - 13/5/13(月) 19:30 -

引用なし
パスワード
   回答ありがとうございます!
2番目、3番目のブック名は、
それぞれ読み込む部分のBラインならどこでも大丈夫です。
読み込みはアクティブシートのものです。

説明が足りず申し訳ございませんが、
よろしくお願いいたします。

【74282】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/13(月) 21:12 -

引用なし
パスワード
   ▼Ib(初心者) さん:

シートの状態など見えないところはありますが。
マクロブックのデータ入力場所シートをコピーした新規ブックにCSVファイルから転記して保存します。
データ入力場所シートへは書き込みをしていません。コピー元として参照するだけです。
データ入力場所シートの転記領域は、あらかじめ空白にしておいてください。

なお、

新規ブック名は、B4,B5,・・・と必要なだけ記入しておいてください。
また、領域は、●部分に必要なだけ記述。以下コードでは2ヶ所にしてあります。
新規ブックの保存フォルダは ★部分。以下コードではMyDocumentにしてあります。

Sub 円楕円2_Click()

  Dim strFileName As String
  Dim セル内容, パス名 As String
  Dim shT As Worksheet
  Dim shF As Worksheet
  Dim myA As Variant
  Dim myR As Range
  Dim x As Long
  Dim NameC As Range
  
  Application.ScreenUpdating = False
  
  Set NameC = Range("B4")   '■新規ブック名開始セル
  
  ' オープンするCSVファイルのフォルダを C:\ として
  ' ファイルオープンのダイアログを開く
  ChDir ("C:\")
  strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
  If strFileName = "False" Then Exit Sub 'キャンセルボタンなら終了
  
  'Csvファイルのシートを規定
  Set shF = Workbooks.Open(Filename:=strFileName).Sheets(1)
  ThisWorkbook.Sheets("データ入力場所").Copy 'このシートをコピーして新規ブックを生成
  Set shT = ActiveWorkbook.Sheets(1)     '新規ブックのシートを規定
  パス名 = CreateObject("WSCript.Shell").SpecialFolders("MyDocuments")  '★保存場所
  
  For Each myA In Array("A1:R272", "A273:R543")  '●ここで転記元領域を規定。いくつでもOK
    Set myR = shF.Range(myA)
    セル内容 = NameC.Value
    myR.Copy shT.Range("A3")
    Application.DisplayAlerts = False  '同名ブックがあれば無条件上書き
    shT.Parent.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Application.DisplayAlerts = True
    shT.Range("A3").Resize(myR.Rows.Count, myR.Columns.Count).ClearContents
    Set NameC = NameC.Offset(1)
  Next
  
  shF.Parent.Close False   'CSVファイルを閉じる
  shT.Parent.Close False   '作成した新規ブックを閉じる
  
  Application.ScreenUpdating = True
  MsgBox "処理終了"
  
End Sub

【74283】Re:CSVファイルの読み込みの繰り返し
質問  Ib(初心者)  - 13/5/13(月) 22:26 -

引用なし
パスワード
   お返事ありがとうございます!

計算式をシートごとに分けているため、
データ入力シートにコピーするところはかわるのですが、
そのままコピーして付けておきたいシートが20枚近くあるんです。

この場合は、そのままコピーさせる文を
枚数分続ければいいのでしょうか?

うまく理解できておらず、申し訳ありません。
自分でも試してみますが、宜しくお願い致します。

【74284】Re:CSVファイルの読み込みの繰り返し
質問  Ib(初心者)  - 13/5/14(火) 0:02 -

引用なし
パスワード
   たびたびすみません。
実行してみたのですが、失敗してしまいました。
デバックエラーで「WorkbookクラスのSaveAsメソッドが失敗しました」
と出てしまいます。


上手く説明できないのですが、
元のブック→シートが20枚。
コマンドボタンが置いてあるシートがデータの置き換えを行いたいシート("データ入力場所")。

CSVデータ→シートは1枚でデータが複数種類連続で載っている
    参照部分1.(A2:R272)  希望ファイル名A (CSVのB4セルの文字列)
    参照部分2.(A273:R543) 希望ファイル名B(B300)
    参照部分3.(A544:R815) 希望ファイル名C(B600)
        .
        .
        .

作りたいブック→
シートを20枚引き継いだ状態で、Aというファイル名で1.を参照したブックを、
Bというファイル名で2.を参照したブック、といった風なもの

上手く説明ができずに申し訳ありません。

【74287】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/14(火) 7:56 -

引用なし
パスワード
   ▼Ib(初心者) さん:

オリジナルマクロブックの他のシートも含めて複製を作成すると言うことはわかりました。
その処理用のコードは別途アップしますが、
「WorkbookクラスのSaveAsメソッドが失敗しました」
このエラーは、とりあえず私がアップしたコードをそのまま流して発生したのですか?
それとも、そちらで手を加えたコードで発生したのですか?
後者なら、そのコードを全てアップいただけませんか?

【74289】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/14(火) 11:14 -

引用なし
パスワード
   保存場所や変更可能だと思った場所だけ変更して実行しました。

Sub 角丸四角形3_Click()

  Dim strFileName As String
  Dim セル内容, パス名 As String
  Dim shT As Worksheet
  Dim shF As Worksheet
  Dim myA As Variant
  Dim myR As Range
  Dim x As Long
  Dim NameC As Range
 
  Application.ScreenUpdating = False
 
  Set NameC = Range("B4,B300,B600,B900,B1200,B1500") '■新規ブック名開始セル
 
  ' オープンするCSVファイルのフォルダを C:\ として
  ' ファイルオープンのダイアログを開く
  ChDir ("C:\")
  strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
  If strFileName = "False" Then Exit Sub 'キャンセルボタンなら終了
 
  'Csvファイルのシートを規定
  Set shF = Workbooks.Open(Filename:=strFileName).Sheets(1)
  ThisWorkbook.Sheets("データ入力場所").Copy 'このシートをコピーして新規ブックを生成
  Set shT = ActiveWorkbook.Sheets(1)     '新規ブックのシートを規定
  パス名 = CreateObject("WSCript.Shell").SpecialFolders("C:\")  '★保存場所
 
  For Each myA In Array("A2:R272", "A273:R543", "A544:R815", "A816:R1085", "A1086:R1356", "A1357:R1627")  '●ここで転記元領域を規定。いくつでもOK
    Set myR = shF.Range(myA)
    セル内容 = NameC.Value
    myR.Copy shT.Range("A3")
    Application.DisplayAlerts = False  '同名ブックがあれば無条件上書き
    shT.Parent.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Application.DisplayAlerts = True
    shT.Range("A3").Resize(myR.Rows.Count, myR.Columns.Count).ClearContents
    Set NameC = NameC.Offset(1)
  Next
 
  shF.Parent.Close False   'CSVファイルを閉じる
  shT.Parent.Close False   '作成した新規ブックを閉じる
 
  Application.ScreenUpdating = True
  MsgBox "処理終了"
 
End Sub


保存場所をMyDocumentsにしておけば実行は出来ましたが、1つしか保存されておらず、
タイトルが1番目もののまま、6番目のデータが中にある状態になってしまいました。
保存場所の設定と新規ブック名の入力方法が私のほうで間違っているのかもしれません。
何卒よろしくお願いいたします。

【74290】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/14(火) 11:31 -

引用なし
パスワード
   昨夜、自分なりにいじってみたのですが、デバックエラーの連続で進まなかったコードも載せてみます。
あまり知識がないままいじってみてしまったので、的外れなのかもしれませんが、
これを実行してもSaveAsメソッドが失敗と出てしまいます。

先ほど載せ忘れたのですが、エラーの起きる位置は

shT.Parent.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

の部分です。


Sub 角丸四角形3_Click()

  Dim strFileName As String
  Dim セル内容, パス名 As String
  Dim shT As Worksheet
  Dim shF As Worksheet
  Dim myA As Variant
  Dim myR As Range
  Dim x As Long
  Dim NameC(5) As String
  Dim i As Integer
 
  Application.ScreenUpdating = False

 
  ' オープンするCSVファイルのフォルダを C:\ として
  ' ファイルオープンのダイアログを開く
  ChDir ("C:\")
  strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
  If strFileName = "False" Then Exit Sub 'キャンセルボタンなら終了
 
  NameC(5) = Range("B4,B300,B600,B900,B1200,B1500") '■新規ブック名開始セル
   
  'Csvファイルのシートを規定
  Set shF = Workbooks.Open(Filename:=strFileName).Sheets(1)
  ThisWorkbook.Sheets("データ入力場所").Copy 'このシートをコピーして新規ブックを生成
  Set shT = ActiveWorkbook.Sheets(1)     '新規ブックのシートを規定
  パス名 = CreateObject("WSCript.Shell").SpecialFolders("MyDocuments")  '★保存場所
 
  For Each myA In Array("A2:R272", "A273:R543", "A544:R815", "A816:R1085", "A1086:R1356", "A1357:R1627")  '●ここで転記元領域を規定。いくつでもOK
    Set myR = shF.Range(myA)
    i = 0
    セル内容 = NameC(i)
    myR.Copy shT.Range("A3")
    Application.DisplayAlerts = False  '同名ブックがあれば無条件上書き
    shT.Parent.SaveAs Filename:=パス名 & "\" & セル内容 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Application.DisplayAlerts = True
    shT.Range("A3").Resize(myR.Rows.Count, myR.Columns.Count).ClearContents
    i = i + 1
  Next
 
  shF.Parent.Close False   'CSVファイルを閉じる
  shT.Parent.Close False   '作成した新規ブックを閉じる
 
  Application.ScreenUpdating = True
  MsgBox "処理終了"
 
End Sub


何度も申し訳ありません。ご親切に教えていただけて、本当に感謝しております。
何卒よろしくお願いいたします。

【74291】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/14(火) 18:12 -

引用なし
パスワード
   ▼Ib(初心者) さん:

まだ精査していませんが、とりあえず。
新規ブック名を NameC という 6つの要素(0 - 5) を持った配列にいれておられるんですね。
そういった方法もいいですね。ただ、ちょっと、配列へのデータの格納方法が間違っています。
明日にでも、コード案はアップしますが、確認です。

6つのブックにつける名前は、最初のものから順番に
B4,B300,B600,B900,B1200,B1500 に入っているのですね?

【74292】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/14(火) 20:30 -

引用なし
パスワード
   お返事ありがとうございます。

はい、その順番で入っています。

宜しくお願い致します。

【74294】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/15(水) 10:07 -

引用なし
パスワード
   ▼Ib(初心者) さん:

おはようございます

改訂版です。
保存ブックが xlsm なので、このマクロブック自体をマクロ付で保存しています。
転記の後、転記領域をクリアしていますが、転記前にはクリアしていません。
なので、マクロブックの"データ入力場所"シートの転記想定領域は、空白にしておいてください。
(転記領域サイズが、必ずしも一定ではないようですのでマクロでの事前のクリアが困難なので)

Sub 円楕円2_Click()

  Dim strFileName As String
  Dim セル内容, パス名 As String
  Dim shT As Worksheet
  Dim shF As Worksheet
  Dim shM As Worksheet
  Dim myR As Range
  Dim i As Long
  Dim nameV As Variant
  Dim CopyV As Variant
  Dim NameC As Range
  
  Application.ScreenUpdating = False
  
  Set shM = ActiveSheet
  Set shT = ThisWorkbook.Sheets("データ入力場所")
  
  nameV = Array("B4", "B300", "B600", "B900", "B1200", "B1500")                    '新規ブック名セル
  CopyV = Array("A2:R272", "A273:R543", "A544:R815", "A816:R1085", "A1086:R1356", "A1357:R1627")   '転記元領域
  
  ' オープンするCSVファイルのフォルダを C:\ として
  ' ファイルオープンのダイアログを開く
  ChDir ("C:\")
  strFileName = Application.GetOpenFilename("CSVファイル (*.CSV),*.CSV", 1, "ファイルを選択")
  If strFileName = "False" Then Exit Sub 'キャンセルボタンなら終了
  
  'Csvファイルのシートを規定
  Set shF = Workbooks.Open(Filename:=strFileName).Sheets(1)
  パス名 = CreateObject("WSCript.Shell").SpecialFolders("MyDocuments")  '★保存場所
  
  For i = LBound(nameV) To UBound(nameV)
  
    Set NameC = shM.Range(nameV(i))   '保存ブック名セル
    Set myR = shF.Range(CopyV(i))    '転記元領域
    セル内容 = NameC.Value
    myR.Copy shT.Range("A3")
    Application.DisplayAlerts = False  '同名ブックがあれば無条件上書き
    'マクロブックの複製ブックを新規作成
    ThisWorkbook.SaveCopyAs パス名 & "\" & セル内容 & ".xlsm"
    '次のコピーのため、転記した領域をクリア
    shT.Range("A3").Resize(myR.Rows.Count, myR.Columns.Count).ClearContents
  
  Next
  
  shF.Parent.Close False   'CSVファイルを閉じる
  
  Application.ScreenUpdating = True
  MsgBox "処理終了"
  
End Sub

【74296】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/15(水) 16:40 -

引用なし
パスワード
   御返事ありがとうございます。

実行してみましたが、エラーは出ないものの
1ブックしか保存されておらず、そのブックも開けませんでした。

自分でも原因を調べているところです。
宜しくお願い致します。

【74297】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/15(水) 19:02 -

引用なし
パスワード
   ループは実行されているのですが、セル内容の部分がループしていないようで、
Empty値になったままになっていました。
NameCの中を見ていると、1週目はセルの内容を読みこんでくれていたのですが、
2週目から読みこめていないようでした。

CopyVとNameV自体ループはしているみたいです。

「セル内容=」の部分の位置を変えてみたら1週目は無事にセル内容のところに読み込みました。ループの中身を、
  For i = LBound(nameV) To UBound(nameV)
 
    Set NameC = shM.Range(nameV(i))   '保存ブック名セル
    Set myR = shF.Range(CopyV(i))    '転記元領域
    myR.Copy shT.Range("A3")
    セル内容 = NameC.Value
    Application.DisplayAlerts = False  '同名ブックがあれば無条件上書き
    'マクロブックの複製ブックを新規作成
    ThisWorkbook.SaveCopyAs パス名 & "\" & セル内容 & ".xlsm"
    '次のコピーのため、転記した領域をクリア
    shT.Range("A3").Resize(myR.Rows.Count, myR.Columns.Count).ClearContents
のように変更してみました。

それから、「転記領域サイズが、必ずしも一定ではないようですので」といわれて初めて気付いたのですが、
一部範囲指定を間違えてしまっていました、
正しくは"A2:R272", "A273:R543", "A544:R814", "A815:R1085", "A1086:R1356", "A1357:R1627"です、すみません・・・

【74298】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/15(水) 19:15 -

引用なし
パスワード
   たびたび失礼いたします。

別のCSVデータを開いたまま、実行すると、
そちらのSCVのセルをセル名に設定してループするようです。

上手く説明できなくて申し訳ないのですが、例えば、
CSV1とCSV2があったとして、
CSV1の実行をする際にCSV2を予め開いておくと、コピーされるデータはCSV1なのに、ブック名はCSV2の物を使っている状態になります。
CSV1を実行する際CSV1を開いておくとエラーが発生し実行できず、
他のデータはなにも開かない状態でCSV1を実行すると、1ループ目のブックしか保存されません。

まだもうしばらく調べてみますが、宜しくお願い致します。

【74299】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/15(水) 21:48 -

引用なし
パスワード
   ▼Ib(初心者) さん:

>ループは実行されているのですが、セル内容の部分がループしていないようで、
>Empty値になったままになっていました。
>NameCの中を見ていると、1週目はセルの内容を読みこんでくれていたのですが、
>2週目から読みこめていないようでした。

>「セル内容=」の部分の位置を変えてみたら1週目は無事にセル内容のところに読み込みました。

まず、こちらでは、問題なく処理されています。
ただし、以下の前提です。

●ブック名は 「マクロ実行時にアクティブなシートの」B4やB300やB600 に記載されている。

>別のCSVデータを開いたまま、実行すると、
>そちらのSCVのセルをセル名に設定してループするようです

うえでも書きましたが、

●ブック名は 「マクロ実行時にアクティブなシートの」B4やB300やB600 に記載されている。

これが大前提です。そうではなく、全く別のブックが、アクティブになっている状態で
実行することを想定したコードにはなっていません。

★もちろん、どんなブックが最前面にあろうと正しく処理できるコートにすることは可能です。
 ただし、その場合、B3,B300,B600,・・・等にブック名が記載されたシートのシート名を
 教えてもらう必要はありますが。

【74300】Re:CSVファイルの読み込みの繰り返し
発言  Ib(初心者)  - 13/5/15(水) 21:53 -

引用なし
パスワード
   御返事ありがとうございます。

ブック名は、読み込むCSVブックのセルになります。
説明不足ですみません・・・

【74301】Re:CSVファイルの読み込みの繰り返し
発言  UO3  - 13/5/16(木) 6:42 -

引用なし
パスワード
   ▼Ib(初心者) さん:

>ブック名は、読み込むCSVブックのセルになります。

それでは、コードの位置は、こちらがアップしたままで

Set NameC = shM.Range(nameV(i))   '保存ブック名セル

これを

Set NameC = shF.Range(nameV(i))   '保存ブック名セル

にしてください。

【74302】Re:CSVファイルの読み込みの繰り返し
お礼  Ib(初心者)  - 13/5/16(木) 10:59 -

引用なし
パスワード
   無事に動きました!


たくさん教えてくださってありがとうございます。
UO3様にはとても感謝しております。ありがとうございました!

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