戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
VBAで他のブックにコピペ

    [196001] VBAで他のブックにコピペ-

    ■親トピック/記事引用/メール受信=ON■

    □投稿者/ マイマイ -(2023/10/25(23:08))
    □U R L/
      AというフォルダーにBとCというファイルがあります
      B(コピー元)はPASS設定で開くエクセルの台帳
      Bのデータをコピペし、C(コピー先)のファイルにはりつけたい
      VBAの動作としては、Cのファイルを開くと、自動的にBのファイルが開かれCにコピぺ後、
      Bの画面は保存されることなく、閉じるような流れになります。
      
      以下2点教えてください。
      
      ・以下のコードで修正が必要な部分と修正コード
      ・現状よりもVBAの動作が早くなるようなコード
      
      
      
      Private Sub Workbook_Open()
      
      
      'Put your code here
      '
      '台帳取込 Macro()
      ’
      ’
      
      
         Dim FilePath As String
         Dim FileName As String
         Dim wb As Workbook
         Dim OpenFlag As Boolean
         
          'コピー元ファイルの入っているフォルダをパスを設定
         FilePath = "C:\Users\user\OneDrive\デスクトップ\台帳データ"
         'コピー元ファイル名を設定
         FileName = "コピー元.xlsx"
         
      
      
        ’動作を早くするコマンド開始
        With Application
             ・Caluculation = xlCalculationManual
                               ・EnableEvents = False
                   ・ScreenUpdating = False
                   End With
      
      
         
         'コピー元のブックが存在するか確認
         If Dir(FilePath & "\" & FileName) = "" Then
      
      
            'データが存在しないときは・・・。
            MsgBox FileName & "というファイルが存在しません" & vbCrLf & _
               "指定のフォルダに該当のファイルを入れて実行し直してください"
      
      
            Exit Sub
         End If
         
         '既に開いているかをチェック
         For Each wb In Workbooks
            If wb.Name = FileName Then
               '既に開いていたらフラグを立ててfor文を抜ける
               OpenFlag = True
               Exit For
            End If
         Next wb
         
         'フラグがFalseだったらコピー元のファイルが開いていないので、開く
         If OpenFlag = False Then
          
      
      ’パスワードの解除をし、コピー元の台帳を開く
            
      On Error Resume Next
          Workbooks,Open FileName:=”C:\Users\user\OneDrive\デスクトップ\台帳データ¥コピー元.xlsx”,Password:="ic"
             If Err.Number=0 Then
                 MsgBox"ブックを開けました"
          Else
               MsgBox"ブックを開けませんでした"
         End If   
           
            
         End If
         
         
         'コピー元の台帳のデータをコピー
         Workbooks(FileName).Worksheets("台帳(最新)").Range("A1:Y3600").Copy _
            Workbooks(ThisWorkbook.Name).Worksheets("台帳(参照用)").Range("A1")
            
         'コピー元のブックを閉じる(セーブしない)
          Workbooks(FileName).Close savechanges:=False
      
      
      'コピー先に貼付した台帳データの編集(マクロの記録)のコード
      
      '<省略>
      
      ’動作を早くするコマンド終了
        With Application
             ・Caluculation = xlCalculationAutomatic
                               ・EnableEvents = True
                   ・ScreenUpdating = True
                   End With
      
      MsgBox ”データ更新・取込終了しました。別紙の入力をお願いします”
      
      
      
      
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [196003] Re[1]: VBAで他のブックにコピペ-

    記事引用/メール受信=OFF■

    □投稿者/ ヘンリー -(2023/10/28(09:40))
    □U R L/
      >・以下のコードで修正が必要な部分と修正コード
      現状で不具合がないなら、修正は必要ないと思います。
      
      >・現状よりもVBAの動作が早くなるようなコード
      セルの値だけ取得できれば良いのなら、Excel4.0マクロを使用する。
      コピー元の形状にもよりますが、ADOやODBCなどを使用して値を取得する。
      
      
      その他、「コピー&ペースト」はなるべく使わずに、
      「値を代入する」という考え方をするとよいと思います。
      例えば、
      Range("A1").Copy
      Range("A2").Select
      ActiveSheet.Paste
      とするのではなく、
      Range("A2").Value = Range("A1").Value
      とする方が速いです。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G