
No.5ベストアンサー
- 回答日時:
こんにちは
横から失礼します
#3で示されているコードとなさりたい事には、かなり違いがありますね
>もととなるAというエクセルファイル
これは、VBAを実行するブックを指していますか?
ここがはっきりしないとダメです。(重要なところです)
しかし、お急ぎなようなので
もととなるAというエクセルファイル=VBA実行ブックとして 回答を進めます
コードでは別フォルダに新しく(コピー)ブックが出来ますが、、
同じファイルに上書きをすると元データ(ファイル)を書き換えてしまいますが良いのでしょうか?
示されているコードを同じフォルダに上書き保存する場合の改造は
①不具合を直します(すでに出ている回答に重複しますが)
FileName = Dir(FolderName1 & “*xls*”) はファイル名を返すので
Workbooks.Open FileName だけではダメだと思います
Workbooks.Open FolderName1 & FileName ですね。
②同じパスに保存
FolderName2 & FileName ではなく
Workbooks(Workbooks.Count).SaveAs FolderName1 & FileName
そもそも上書きなので .Close SaveChanges:=True かな
③ループで、もととなるAというエクセルファイルを対象から外す必要があります。
もととなるAというエクセルファイルがVBAを実行するブックだった場合
If ThisWorkbook.Name <> FileName Then
ブックを開く
コピー実行
保存して閉じる
End If
FileName = Dir()
④既存ブックへの上書き保存なので
アラートを出さないようにする 一例
Application.DisplayAlerts = False
保存して閉じる
Application.DisplayAlerts = True
今回は上書きなので
.Close SaveChanges:=True でOK?
コピーについての参考
ThisWorkbook 実行ブック
ActiveWorkbook 開いた直後のブック(他のブックがアクティブになるまで)
Workbooks(Workbooks.Count) 現状の最後に開いたブック
この場合、Workbooks(Workbooks.Count)とActiveWorkbookは同じ
No.4
- 回答日時:
No.3です。
ベテラン回答者様に聞いてみては良かったのにと思いますが。
こんな初級レベルなジジィでなくとも。
⇒ここでAAAグレードの回答を続けている位ですから、どの言語でも解決可能な方なのかなと。
>貼り付ける範囲を変えたいのですがうまくいきません。
曖昧ではなく、
・貼り付けたい範囲を変えたいとはどういう意味なのか?
・上手くいかないとは何が起きているのか?
と言った情報は必要かと。
取り敢えず
Workbooks.Open FileName
ここは格納しているフォルダが不明(Dir関数はファイル名しか取得しない)なので、
Workbooks.Open FolderName1 & FileName
ですね。
---
If FolderName1 = “False” Then
Exit Sub
End If
この部分は全く意味をなさないと思いますよ。
手前で変数にPathを代入していますし、その有無をチェックしている訳じゃないですから。
If Dir(FolderName1, vbDirectory) = “” Then
Exit Sub
End If
こうかな?
でも他で言うならWorkBookオブジェクトで宣言しSetステートメントにて代入された変数を用いるのが、後々わかりやすいかも。
No.3
- 回答日時:
セルに書式設定(塗りつぶしやフォントの変更・罫線など)がなければ、コピペではなく値の代入でしょう。
>同じフォルダーにある同じ形式の複数のエクセルファイルの同じシートA
同じシートAとはシート名の事ですか?
どのブックにも存在している?
>同じフォルダーにある同じ形式の複数のエクセルファイル
参考リンクは既に出ていますので割愛しますが、間違っても自分自身に値を貼り付けないよう気を付けて下さいね。
どうしてもコピー・ペーストしたいのです。その部分に画像的なものがありまして。
同じシートAとはシート名です。どのブックにも存在しています。ブック名はランダムです。
下記でいうと
Sub フォルダの中に含まれるファイルのファイルを順に変更する2()
Dim FolderName1 As String
Dim FolderName2 As String
Dim FileName As String
FolderName1 = “C:\処理前\”
FolderName2 = “C:\処理後\”
If FolderName1 = “False” Then
Exit Sub
End If
FileName = Dir(FolderName1 & “*xls*”)
Do While FileName <> “”
Workbooks.Open FileName
Cells(1, 1) = 1
Workbooks(Workbooks.Count).SaveAs FolderName2 & FileName
Workbooks(Workbooks.Count).Close
FileName = Dir()
Loop
End Sub
フォルダを変える必要なく、貼り付ける範囲を変えたいのですがうまくいきません。
No.2
- 回答日時:
おはようございます。
参考になりそうなリンクを貼っておきます。
フォルダの中にある全てのExcelファイルに同じ処理をするマクロ
https://officevba.info/fileikkatsushori/
ThisWorkbook.Path
https://daitaideit.com/vba-get-filepath/#mokuzi3-1
値だけなら、コピーではなく、変数に入れておくのもありかと。
毎回コピーでも良いですが。
Dim myAllDat as Variant
myAllDat = Range("AM1:bb12").Value ’変数に値を一括で入れる
Range("AM1:bb12").Value = myAllDat ’セルに一気に書き出し
取り合えず、No.1の方の記録と、上記である程度可能かと思います。
不明な点がありましたら、コードをUpして、エラーや、どううまくいかない
かなどを書かれると、回答があると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel に貼り付けた図形が、保...
-
VBA 新規ファイルを元ファイル...
-
ロータス1-2-3のファイルをエ...
-
EXCELので作成した表をビルダー...
-
エクセル関数のHyperLinkでの警告
-
Wordで作成したものをUSBに保存...
-
EXCELを起動したとき120%の表...
-
至急!教えてください!!「Mic...
-
メールでCADデータが送られまし...
-
Macで作成したファイル(Word)を...
-
jtrim 1.53cが正常な動きをし...
-
office起動時に設定画面が表示...
-
outlookの分類項目に【R-mail】...
-
共有フォルダで上書き保存できない
-
Outlookでメールが送信できない。
-
エクセルで「ページレイアウト...
-
excel について。
-
エクセルのダイアログを開く右...
-
μtorrentのアンインストール方法
-
エクセルの起動時にbook1を開き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel に貼り付けた図形が、保...
-
アクセスVBAで既に開いているエ...
-
ロータス1-2-3のファイルをエ...
-
エクセルの表示サイズ変更(画...
-
エクセル関数のHyperLinkでの警告
-
VBA 新規ファイルを元ファイル...
-
プログラム破損??
-
エクセルファイルをクリックし...
-
EMBEDについて
-
Winshot について
-
エクセルファイルに取り込んだ写真
-
データ集計の方法
-
Excel複数ファイルを1つにまと...
-
Open Office 表計算ソフト
-
エクセルファイルを他からは書...
-
バイナリファイルを画像形式の...
-
WindowsのエクセルファイルをMa...
-
何が悪いExcel
-
Excelの複数ファイルの内...
-
ワードに貼られたエクセルのリ...
おすすめ情報