[[20210418180923]] 『 「データ差込して個別にファイル保存」 についax(Yur) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『 「データ差込して個別にファイル保存」 について』(Yur)

投稿
[[20121119154726]] 『データ差込して個別にファイル保存』 
について...
このマクロを用いて、以前から使ているフォームのシートに
データ差込個別保存をしようとしています。

マクロ実行の際、1件ごとに互換性チェックメッセージがでて、
続行ボタンを押すようになります。
ボタンを押して保存されたファイルはXLS形式で保存されています。

以前のフォームは古いエクセルで、(97-2003)作っています。
シートをコピーしてXLSX形式で保存した上で、再度
個別保存用ファイルに移しても変わりません。

今使っているエクセルは通常の保存ではXLSXの形式で、このマクロで
保存したデータ差し込みして個別保存ファイルはXLSMになっています。

ファイルのシートは
差し込むデータのシート
以前のフォームを移動またはコピーしたシート
の2シートです。

アドバイスがあればお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


互換性チェックでキャンセルを選択してデバックを選ぶと
マクロの
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & r.Value & ".xls", FileFormat:=xlNormal
この部分に色がついています。
無知ながら"xls"の部分を"xlsx"に変えてみましたが、変りはありませんでした。

(Yur) 2021/04/18(日) 19:03


マクロを記入しているファイルを .xls 形式で保存して、実行してみるか

"xls"の部分を"xlsm"にしてみる
(わ) 2021/04/18(日) 19:09


ちょっと編集がかぶってしまいましたが、とりあえずそのまま。

>アドバイスがあればお願いします。

のようなことを提示してみてはどうでしょうか?

■1
追加投稿を拝見して。

 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & r.Value & ".xls", FileFormat:=xlNormal

↑のときrの中身は何ですか?
あと、「FileFormat:=xlNormal」にするなら、"xlsx"に変えるとまずいです。
(むしろ「FileFormat」を指定するなら、拡張子はExcel君に勝手につけてもらったほうがよいとおもいます。)

(もこな2) 2021/04/18(日) 19:10


返信ありがとうございます。
エクセルバージョンは2019 OSはウィンドウズ10です。

マクロのコードは素人のためほぼ判らず、記載のものをコピーして
います。
rの中身も意味がわからず、申し訳ありません。

ファイルそのものをxlsにしてみましたが変わらず。

出てくるメッセージは
“このブックで使用されている次の機能は、以前のバージョンのExcelではサポートされていません。
このブックを現在選択されているファイル形式で保存すると、これらの機能が失われるか、正常に
実行されなくなる可能性があります。このままブックを保存する場合は、[続行]をクリックしてください。
すべての機能を維持する場合は[キャンセル]をクリックし、新しいファイル形式のいずれかでファイルを
保存してください。”
と出ています。
10レコードあれば10回出てきます。

何かわかればアドバイスをお願いします。

(Yur) 2021/04/18(日) 19:26


■2
>マクロのコードは素人のためほぼ判らず
では、まずは元のコードを【ステップ実行】して理解するところから手を付けてみてはどうですか?

そして、理解できない命令があればネット検索したうえで、それでもわからなければ具体的に聞いてみてください。

■3
>ファイルそのものをxlsにしてみましたが変わらず。
別に、本体を「xls」形式にしなくても大丈夫ですよ。
(シートをコピーして新規にできたブックを保存してるだけなので)

繰り返しになりますが、「FileFormat:=xlNormal」にするなら、"xlsx"に変えるとまずいです。
↓を参照して「xlsx」形式がなんであるか調べてみるとよいでしょう。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlfileformat

(もこな2) 2021/04/18(日) 20:07


アドバイスありがとうございます。
(Yur) 2021/04/18(日) 20:25

■3の訂正
よく考えたら、シートをコピーして新規にできたブックを保存しているからこそ、本体をxls形式にしちゃえば互換性問題は回避できますね。多分。

まぁ、本体のファイル形式はお好みということで。

(もこな2) 2021/04/18(日) 20:47


コンパイルエラーにならないことしかチェックしてませんが、研究用コードを提供します。
    Sub 研究用()
        Dim 行 As Long
        Dim srcSH As Worksheet

        Stop 'ブレークポイントの代わり

        Set srcSH = ThisWorkbook.Worksheets("顧客")

        '▼2行目〜自ブックの「顧客」シートのB列最終行まで繰り返し処理
        For 行 = 2 To srcSH.Cells(srcSH.Rows.Count, 2).End(xlUp).Row
            ThisWorkbook.Worksheets(Array("作成", "1回目", "2回目", "3回目")).Copy

            With Workbooks(Workbooks.Count)
                '▼コピーして出来たブックの「作成」シートに自ブックの「顧客」シートから転記
                .Worksheets("作成").Range("D1").Value = srcSH.Cells(行, "B")
                .Worksheets("作成").Range("F4").Value = srcSH.Cells(行, "C")
                .Worksheets("作成").Range("H6").Value = srcSH.Cells(行, "D")
                .Worksheets("作成").Range("K9").Value = srcSH.Cells(行, "E")
                .Worksheets("作成").Range("K10").Value = srcSH.Cells(行, "F")
                .Worksheets("作成").Range("M2").Value = srcSH.Cells(行, "G")
                .Worksheets("作成").Range("N6").Value = srcSH.Cells(行, "H")

                '▼コピーして出来たブックを名前をつけて保存(拡張子を指定しなければ、エクセル君が勝手に付けるのでそれに任せる)
                .SaveAs _
                    Filename:=ThisWorkbook.Path & "\管理表_" & srcSH.Cells(行, "B").Value & "_" & srcSH.Cells(行, "C").Value, _
                    FileFormat:=xlOpenXMLWorkbook

                '▼コピーして出来たブックを閉じる
                .Close
            End With
        Next 行

    End Sub

(もこな2) 2021/04/18(日) 21:33


いろいろご指導ありがとうございます。
解決できました。

(Yur) 2021/04/19(月) 10:08


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.