Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Access 2016)
アクセスのデータをエクセル(結合セル)に貼る方法を教えてください。
投稿日時: 20/05/05 19:19:45
投稿者: 縞縞

いつも大変お世話になっております。
アクセスのデータをクリップボードを経由してエクセルに貼り付けようとしています。
しかし、エクセルには結合セルを含んでいるため、貼り付けの際、次のメッセージが表示され、
貼り付けることができません。(メッセージ「結合されたセルの一部を変更することができません」)
 
現状、セル結合を解除すると貼る事ができます。また、アクセスVBAでエクセルシートを
指定して出力することは可能ですが、今回の相談はエクセルのシートは加工せずに、
作業上、手動操作で貼り付けを行いたいです。下記にやりたいことをコードを記載いたします。
どうぞよろしくお願いいたします。
 
【やりたいこと】
 アクセスのデータをクリップボードを経由して既定エクセルシートに貼り付けたい。
 貼り付けの操作は、エクセルシート(下記参照)のA列(例:A1)をフォーカスして、
 「貼り付け」を実行すると、アクセスのデータ(項目と商品名)を、A列(A1)に項目、
 B列(B1)に商品名を貼りつけたい。行は1以外の複数行あります。
 
【エクセルシート】
   A B C D E F G H
 1 □■■■■■■□
 2 □■■■■■■□
 3 □■■■■■■□
   A列は非結合セル、B列からG列は結合セル、H列は非結合セル
  
【コード(アクセスのデータ取得とクリップボードに格納)】
 Dim Copy_Txt As String
  Copy_Txt = me!項目 & vbTab & me!商品名
 
 'クリップボードにコピー
   With CreateObject("Forms.TextBox.1")
       .MultiLine = True
       .Text = Copy_Txt
       .SelStart = 0
       .SelLength = .textLength
       .Copy
   End With

回答
投稿日時: 20/05/06 14:02:30
投稿者: WinArrow
投稿者のウェブサイトに移動

一旦、結合を解除してから、貼付け後、再結合
といった手順では?

回答
投稿日時: 20/05/07 11:12:25
投稿者: WinArrow
投稿者のウェブサイトに移動

クリップボードからExcelシートへの貼付けコード例です。
 
セルB1は結合セルという条件です。
 
貼付け部分のみ
 
    Set xlapp = CreateObject("Excel.Applicaion")
    xlspp.Visible = True
    With xlapp.Workbooks.Open(ilename:="ブックフルパス")
        With .Sheets(1)
            Set Mcell = .Range("B1").MergeArea
            .Range("B1").MergeCells = False
            .Range("A1").PasteSpecial xlPasteAll
            Mcell.MergeCells = True
        End With
        .Close True
    End With
    Set xlspp = Nothing
 

トピックに返信