Excel VBA質問箱 IV

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

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


7816 / 76734 ←次へ | 前へ→

【74500】Re:読み取り専用フォルダが開けないエラー
お礼  ぺーぺー  - 13/7/3(水) 13:36 -

引用なし
パスワード
   問題なく実行できました。
ありがとうございました。
一度に100単位のブックを処理していたので非常に助かります。

ただ、いただいたコードでは
保存の際にこれまでと同様に拡張子に関するエラーが出ていたので、
templateの拡張子をxlsm -> xlsxに変更したところ、
問題なく実行できました。
(もともとxlsmである必要はなかった)
fとしてコピーしたファイル形式とtemplateのファイル形式が
異なっていたために起こったエラーでしょうか。

最終的なコードは以下です。
ありがとうございました。

Sub macro()
 Dim folder1 As String
 Dim folder2 As String
 Dim template As String
 Dim f As String
 Dim wbT As Workbook
 Dim wb As Workbook
' 使いませんので、削除
' Dim strWorkBookName As String

 folder1 = "C:\Users\tsuruta\Documents\macro\folder1" 'フォルダ1
 folder2 = "C:\Users\tsuruta\Documents\macro\folder2" 'フォルダ2
 template = "C:\Users\tsuruta\Documents\macro\template.xlsx" 'テンプレートBook

' f = Dir(folder1 & "\" & "1.xlsx") 'フォルダ1内の最初のBook名
' これでは、『C:\Users\tsuruta\Documents\macro\folder1\1.xlsx』しか
' 処理の対象になりませんので、下記のように変更
 f = Dir(folder1 & "\*.xlsx") 'フォルダ1内のxlsxファイルを取得

 Do While f <> "" 'Book名がある間

  Set wbT = Workbooks.Open(template) 'テンプレートを開く
 
'  Set wb = Workbooks.Open(folder1 & "\" & "1.xlsx") '生データを開く
'  ここもこのままでは、
' 『C:\Users\tsuruta\Documents\macro\folder1\1.xlsx』しか
'  処理の対象になりませんので、下記のように変更。
'  変数『f』には開く対象のファイル名が取得されていますので
'  それを使用してOpenするBookのFullPathを生成。
  Set wb = Workbooks.Open(folder1 & "\" & f) '生データを開く
 
  wb.Worksheets("Sheet1").Range("B:B").Copy '生データのBookのSheet1のB列の値をコピー
  wbT.Worksheets("Sheet1").Range("B:B").PasteSpecial 'コピーした値をテンプレートのSheet1のB列にペースト
  Application.CutCopyMode = False 'クリップボード停止(警告回避)
 
'  strWorkBookName = ActiveWorkbook.Name '生データのファイル名をコピー
'  変数fにファイル名が取得ずみです。ここは不要になります。

  wb.Close False '生データを保存せずに閉じる
 
  '以下ソルバー実行
  SolverReset
  SolverOk SetCell:="$G$5", MaxMinVal:=2, ValueOf:=0, ByChange:="$J$3:$J$6", _
  Engine:=1, EngineDesc:="GRG Nonlinear"
  Application.DisplayAlerts = False
  SolverSolve True
  Application.DisplayAlerts = True
  'ソルバー終了
  
'  wbT.Close True, folder2 & "\" & strWorkBookName 'テンプレートの結果を元のファイル名でフォルダ2に保存して閉じる
'  変数fを使用して、Folder2へ同名保存。
  wbT.Close True, folder2 & "\" & f
 
  f = Dir 'フォルダ1内の次のBook名
 Loop '繰り返す
End Sub

8 hits

【74476】読み取り専用フォルダが開けないエラー ぺーぺー 13/6/24(月) 8:39 質問
【74480】Re:読み取り専用フォルダが開けないエラー こたつねこ 13/6/25(火) 21:53 回答
【74486】Re:読み取り専用フォルダが開けないエラー ぺーぺー 13/6/26(水) 19:36 質問
【74490】Re:読み取り専用フォルダが開けないエラー こたつねこ 13/6/27(木) 10:35 発言
【74497】Re:読み取り専用フォルダが開けないエラー ぺーぺー 13/7/2(火) 14:16 質問
【74499】Re:読み取り専用フォルダが開けないエラー こたつねこ 13/7/3(水) 9:42 回答
【74500】Re:読み取り専用フォルダが開けないエラー ぺーぺー 13/7/3(水) 13:36 お礼

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