Access VBA質問箱 IV

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

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


294 / 500 ページ ←次へ | 前へ→

【7345】Re:Excelに改ページを挿入したい
発言  nn  - 06/2/21(火) 14:22 -

引用なし
パスワード
   ▼小僧 さん:

早速のお返事ありがとうございます。
ためさせていただきました。


>>        '↓ココで、「アプリケーション定義エラー」が発生する
>>        Debug.Print Err.Description
>
>エラーが発生するのはその行で間違いありませんでしょうか。
>
>
>>      .HPageBreaks.Add Before:=Cells(arrPgBreakRow(i), 1)
>                        ^^^^^
>Cells オブジェクトが上位のオブジェクトから参照されていないのが
>エラーの原因だと思われるのですがいかがでしょう。
>(「.」がついていませんよね)

エラーの発生箇所について間違いはないようです。
「.Cells」でなく「Cells」でも確かにセルを参照してます。
ただ、あまり良い書き方ではないと思うので 改めたいと思います。
(ありがとうございます。)

エラーが発生するのは、水平方向の自動改ページを1番下にドラッグさせた時で、間違いはないようです。
改ページを設定しようとしているデータは、えらく縦長なデータです。
ただ、自動改ページを一回、2回ドラッグさせた場合ではエラーが発生せず、
4回目、五回目あたりで発生するようので
何度も改ページをドラッグすることで1ページにおさめようとしたデータが大きくなりすぎて
エラーが発生しているかも、しれません(推測なのでまちがっているかも)


>>データが縮小されて、印刷紙の左上に小さく印刷されます。
>
>こちらについては もう ExcelVBA の問題ですね^^
>当方も余り詳しくないので以下は外しているかもしれません。
>
>行については改ページを解除した後、再設定されていますが、
>列については解除されたままですよね。
>
>例えば 100% の状態でA〜G 列までが印刷されるとしてデータが H 列まであったとすると、
>ご提示されたコードですと、縮小印刷されてしまいませんでしょうか。
>縮小して1枚に納めるか、それとも列も考慮して改ページを設けるかは
>nn さんの仕様次第だと思います。


>Private Sub setpgBreak2()
>'要参照 Microsoft Excel x.x Object Library
>Dim xlsApp As Excel.Application
>Dim xlsWkb As Excel.Workbook
>Dim aryPgBreakRow() As Variant
>Dim aryPgBreakCol() As Variant
>Dim i As Long
>Dim j As Long
>
>    aryPgBreakRow = Array(10, 20, 30, 40)
>    aryPgBreakCol = Array(5, 10)
>  
>  Set xlsApp = CreateObject("Excel.Application")
>  Set xlsWbk = xlsApp.WorkBooks.Open("D:\test.xls")
>  'xlsApp.Visible = True
>    
>'改ページプレビュー表示
>  xlsApp.Windows(1).View = xlPageBreakPreview
>    
>  With xlsWkb.Sheets("シート名")
>'シートのすべてを印刷範囲に設定する
>    .PageSetup.PrintArea = ""
>  
>'すべての改ページを解除
>    .ResetAllPageBreaks
> 
>'改ページ設定
>    For i = 0 To UBound(aryPgBreakRow)
>      .HPageBreaks.Add Before:=.Cells(aryPgBreakRow(i), 1)
>    Next
>      
>    For j = 0 To UBound(aryPgBreakCol)
>      .VPageBreaks.Add Before:=.Cells(1, aryPgBreakCol(j))
>    Next
>  
>  End With
>
>  xlsWkb.Close True: Set xlsWkb = Nothing
>  xlsApp.Quit: Set xlsApp = Nothing
>End Sub


教えていただいたコードを試してみました。

確かに 手動改ページは教えていただいたやり方で設定することができました。
(縮小率も問題ありません)
ただ、自動改ページが解除されなくて・・。


縮小率は適切に設定し、自動改ページを解除し、手動改ページを設定したい!
というのはナカナカ難しいかもしれない・・。

というかExcelの質問になってきてしまいました。(ほんとすみません)
・ツリー全体表示

【7344】Re:テキストボックスの内容をクリップボー...
お礼  k  - 06/2/21(火) 14:18 -

引用なし
パスワード
   >簡単とはいえないかも知れませんが、他には方法を知りませんので。
>WindowsAPIで、クリップボードへコピーすることができます。
>http://support.microsoft.com/kb/210216/ja

教えていただいたURLを見たのですが今の私にはまだ難しいので7332の投稿で教えて頂いた方法を使用しました。せっかく教えていただいた内容を参考にできずに申し訳ありません。もっと勉強します

>あと、7332の投稿は何のためでしょうか?
>どう見ても同じ質問ですよね?
>意味なく複数の投稿はやらないほうがいいと思いますよ。

書き方が悪かったと思って書き直しをしてしまいました…以後気をつけます。色々とありがとうございました。
・ツリー全体表示

【7343】Re:クリップボードってどう書くの?
お礼  k  - 06/2/21(火) 14:12 -

引用なし
パスワード
   >Me.テキストボックス名.SetFocus
>DoCmd.RunCommand acCmdCopy 'コピー
>
>ではどうでしょうか?

クリップボードにコピーできました!本当にありがとうございます。
・ツリー全体表示

【7342】二つのテーブルの内容をチェックするには
質問  kumakai  - 06/2/21(火) 14:00 -

引用なし
パスワード
   こんにちは
二つのテーブルAA、BBがあります。中のデータをチェックをしたいので、
やり方はわかりません。
ご伝授ください。

AAテーブル、BBテーブルのエリア(一番目の内容)は
AAテーブルの内容、「あ」でない場合は、AAテーブルのデータは違います、
BBテーブルの内容、「い」でない場合は、BBテーブルのデータは違います、
AA、BBテーブルの内容、「あ」、「い」の場合は、正しいです。

AAテーブル
エリア


BBテーブル
エリア

・ツリー全体表示

【7341】Re:Excelに改ページを挿入したい
回答  小僧  - 06/2/21(火) 13:25 -

引用なし
パスワード
   ▼nn さん:
こんにちは。

>        '↓ココで、「アプリケーション定義エラー」が発生する
>        Debug.Print Err.Description

エラーが発生するのはその行で間違いありませんでしょうか。


>      .HPageBreaks.Add Before:=Cells(arrPgBreakRow(i), 1)
                        ^^^^^
Cells オブジェクトが上位のオブジェクトから参照されていないのが
エラーの原因だと思われるのですがいかがでしょう。
(「.」がついていませんよね)


>データが縮小されて、印刷紙の左上に小さく印刷されます。

こちらについては もう ExcelVBA の問題ですね^^
当方も余り詳しくないので以下は外しているかもしれません。

行については改ページを解除した後、再設定されていますが、
列については解除されたままですよね。

例えば 100% の状態でA〜G 列までが印刷されるとしてデータが H 列まであったとすると、
ご提示されたコードですと、縮小印刷されてしまいませんでしょうか。
縮小して1枚に納めるか、それとも列も考慮して改ページを設けるかは
nn さんの仕様次第だと思います。


>自分が作成したコードは冗長で、あまり良いコードだと思えません。
>上記のことをうまく実現するロジック等、教えていただけませんでしょうか。

Private Sub setpgBreak2()
'要参照 Microsoft Excel x.x Object Library
Dim xlsApp As Excel.Application
Dim xlsWkb As Excel.Workbook
Dim aryPgBreakRow() As Variant
Dim aryPgBreakCol() As Variant
Dim i As Long
Dim j As Long

    aryPgBreakRow = Array(10, 20, 30, 40)
    aryPgBreakCol = Array(5, 10)
  
  Set xlsApp = CreateObject("Excel.Application")
  Set xlsWbk = xlsApp.WorkBooks.Open("D:\test.xls")
  'xlsApp.Visible = True
    
'改ページプレビュー表示
  xlsApp.Windows(1).View = xlPageBreakPreview
    
  With xlsWkb.Sheets("シート名")
'シートのすべてを印刷範囲に設定する
    .PageSetup.PrintArea = ""
  
'すべての改ページを解除
    .ResetAllPageBreaks
 
'改ページ設定
    For i = 0 To UBound(aryPgBreakRow)
      .HPageBreaks.Add Before:=.Cells(aryPgBreakRow(i), 1)
    Next
      
    For j = 0 To UBound(aryPgBreakCol)
      .VPageBreaks.Add Before:=.Cells(1, aryPgBreakCol(j))
    Next
  
  End With

  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
End Sub
・ツリー全体表示

【7340】Re:Excelに改ページを挿入したい
質問  nn  - 06/2/21(火) 12:02 -

引用なし
パスワード
   またしても質問なのですが・・。

Excelのシートを一つの印刷ページに入れようとすると、
シートに書き込まれているデータが多い場合は、
データが縮小されて、印刷紙の左上に小さく印刷されます。

これでは見にくいので改ページさせたいセル位置をきめて
(例えば50,80,130など)
そこに改ページをいれようとしました。
データをシートにコピーすると自動的に改ページが書き込まれますので
まず、その改ページを解除して、手動改ページを挿入しようとしているのですが
やはり 印刷した場合に縮小され、印刷紙の左上に小さく印刷されて
具合が悪いです。
余白の設定を行えばよいのでしょうか??

自分が作成したコードは冗長で、あまり良いコードだと思えません。
上記のことをうまく実現するロジック等、教えていただけませんでしょうか。


Private Sub setpgBreak()

  Set Ex = CreateObject("Excel.Application")
  Set exNWBOOK = Ex.WorkBook.Open "D:\test.xls"  

  With exNWBOOK.Worksheets(1)
    '改ページプレビュー表示
    Ex.Windows(1).View = xlPageBreakPreview
    'シートのすべてを印刷範囲に設定する
    .PageSetup.PrintArea = ""
     
    'すべての改ページを解除
    .ResetAllPageBreaks
   
    'シートの垂直な改ページを解除  
    For Each vPgBreak In .VPageBreaks
      vPgBreak.DragOff Direction:=xlToRight, RegionIndex:=1
    Next
    
    On Error Resume Next
    'シートの水平な改ページを解除
    For Each hPgBreak In .HPageBreaks
      hPgBreak.DragOff Direction:=xlDown, RegionIndex:=1
      
      If Err Then
        '↓ココで、「アプリケーション定義エラー」が発生する
        Debug.Print Err.Description
      End If
    Next
    
    '改ページ設定
    arrPgBreakRow = Array(50,80,120,155)
    For i = 0 To UBound(arrPgBreakRow)
      .HPageBreaks.Add Before:=Cells(arrPgBreakRow(i), 1)
    Next
  End With

  Set exNWBOOK = Nothing    
  Set Ex = Nothing

End Sub
・ツリー全体表示

【7339】Re:Excelに改ページを挿入したい
お礼  nn  - 06/2/21(火) 11:44 -

引用なし
パスワード
   ▼小僧 さん:
おはようございます
お返事ありがとうございます。

>>    For Each vPgBreak In .VPageBreaksf
>                     ^^
>こちらは転記ミスでしょうか。
転記ミスです。
.VPageBreaks
が正しいです。


>>Excelで動くコードをAccessから動かすことができません。
>
>
>Excel の DragOffメソッドのヘルプを参照されましたか?
>
>>このメソッドは、マクロ記録機能用です
>>(適用できるのは、表示が改ページ プレビューのときだけです)。
>
>WorkBook を開いた後に
>
>Ex.Windows(1).View = xlPageBreakPreview
>
>と入れてみたらどうなりますでしょうか。

新しいブックを開いた場合は改ページプレビュー表示が解除されるのを
忘れていました。

Ex.Windows(1).View = xlPageBreakPreview
とすることでコード自体は動くようになりました。
小僧さん ありがとうございます。
・ツリー全体表示

【7338】他アプリケーションの操作に関して
質問  藤田と申します。  - 06/2/21(火) 11:18 -

引用なし
パスワード
   はじめまして。PC上で起動されている他のアプリケーション(MS Office製品以外)を終了させる方法を探しています。ご存知の方がおられましたら、是非ご教授願います。
・ツリー全体表示

【7337】Re:抽出の際
質問  TB1  - 06/2/21(火) 10:06 -

引用なし
パスワード
   おはようございます。
さっそくの回答ありがとうございます。
ヘルプを参照してみましたが、もともと店番やJANコードは行頭に0がくるため文字列扱いにしていました。
しかし商品名だけが検索できず、抽出画面になにも表示されません。
参考にしたファイルを見ても違いがないように思われます。
以下、検索のコードです。

Private Sub 検索_Click()
 Dim cnn As ADODB.Connection
 Dim recN As ADODB.Recordset
 Dim recM As ADODB.Recordset
 Dim strSQL As String
 Dim strSearch As String
 
 Set Me.Recordset = Nothing
 Me.店番.ControlSource = ""
 Me.JANコード.ControlSource = ""
 Me.商品名.ControlSource = ""

テーブルにオリジナルは3列しかないのに、改造したものは5列あるから、とか関係ありますか?
なにか、ちょっとしたことなんじゃないかと、もんどりうってます。
よろしくご教授ください。
・ツリー全体表示

【7336】Re:Excelに改ページを挿入したい
発言  小僧  - 06/2/21(火) 9:31 -

引用なし
パスワード
   ▼nn さん:
おはようございます。

>    For Each vPgBreak In .VPageBreaksf
                     ^^
こちらは転記ミスでしょうか。


>Excelで動くコードをAccessから動かすことができません。


Excel の DragOffメソッドのヘルプを参照されましたか?

>このメソッドは、マクロ記録機能用です
>(適用できるのは、表示が改ページ プレビューのときだけです)。

WorkBook を開いた後に

Ex.Windows(1).View = xlPageBreakPreview

と入れてみたらどうなりますでしょうか。
・ツリー全体表示

【7335】リストボックスに1行毎に色を表示
お礼  えんちゃん  - 06/2/21(火) 8:57 -

引用なし
パスワード
   たんさん
有難うございました。
サブフォームでチャレンジします。
また宜しくお願いいたします。
・ツリー全体表示

【7334】Re:テキストボックスの内容をクリップボー...
回答  まさ7251  - 06/2/21(火) 0:26 -

引用なし
パスワード
   ▼k さん:
>accessのVBAを利用してテキストボックスの内容をクリップボードにコピーするボタンを作りたいのですがいまいちよくわかりません
>
>簡単な作成法がありましたら教えてください

簡単とはいえないかも知れませんが、他には方法を知りませんので。
WindowsAPIで、クリップボードへコピーすることができます。
http://support.microsoft.com/kb/210216/ja

あと、7332の投稿は何のためでしょうか?
どう見ても同じ質問ですよね?
意味なく複数の投稿はやらないほうがいいと思いますよ。
・ツリー全体表示

【7333】Re:クリップボードってどう書くの?
回答  Gin_II  - 06/2/21(火) 0:25 -

引用なし
パスワード
   >だとボックスの中に『あいうえお』が書かれるけどクリップボードに
>『あいうえお』を持たせる表記がわからないんです

Me.テキストボックス名.SetFocus
DoCmd.RunCommand acCmdCopy 'コピー

ではどうでしょうか?
・ツリー全体表示

【7332】クリップボードってどう書くの?
質問    - 06/2/20(月) 20:23 -

引用なし
パスワード
   ボックス = "あいうえお"

だとボックスの中に『あいうえお』が書かれるけどクリップボードに『あいうえお』を持たせる表記がわからないんです

??? = ボックス
・ツリー全体表示

【7331】Excelに改ページを挿入したい
質問  nn  - 06/2/20(月) 19:55 -

引用なし
パスワード
   よろしくお願いします。

AccessからExcelを起動し、あるページに改ページを挿入しようとしています。
(改ページを挿入というか、そのシートすべてを1ページにいれようとしている)

以下のようなコードをExcelのVBAで作成し、それをAccess用に直そうとしているのですが、
Excelで動くコードをAccessから動かすことができません。
「オートメーションエラー」
と表示されます。

どのようにすればよいのか、ご存知でしたら教えてください。


Set Ex = CreateObject("Excel.Application")
Set exNWBOOK = Ex.WorkBooks.Open "D:\test.xls"

'改ページを挿入
With exNWBOOK.Worksheets(1)
    .PageSetup.PrintArea = ""
    
    '↓ココが動かない 
    For Each vPgBreak In .VPageBreaksf
      vPgBreak.DragOff Direction:=xlToRight, RegionIndex:=1
    Next
    
    For Each hPgBreak In .HPageBreaks
      hPgBreak.DragOff Direction:=xlDown, RegionIndex:=1
    Next
End With


Win Xp SP1
Office 2003
・ツリー全体表示

【7330】テキストボックスの内容をクリップボード...
質問    - 06/2/20(月) 19:45 -

引用なし
パスワード
   accessのVBAを利用してテキストボックスの内容をクリップボードにコピーするボタンを作りたいのですがいまいちよくわかりません

簡単な作成法がありましたら教えてください
・ツリー全体表示

【7329】Re:クリックした時の行番号の取得方法
お礼  VBAの迷い子  - 06/2/20(月) 17:17 -

引用なし
パスワード
   ▼小僧 さん:
>ソート順を指定しないレコードセットは並び順が保証されませんので、
>1度目はうまくいったとしても、2度目もそうなってくれるとは限りませんね。
了解しました!!
・ツリー全体表示

【7328】Re:抽出の際
発言  小僧  - 06/2/20(月) 17:17 -

引用なし
パスワード
   ▼TB1 さん:
こんにちは。

>コードで検索は出来るのですが、
>品名で検索すると表示しないのです。

>もしかして数値と文字では扱いが違うのでしょうか。

良いところに気づかれましたね。
VBE(コードが表示されている画面)のヘルプで
「抽出条件の指定」というキーワードで検索をしてみて下さい。

数値抽出条件式
テキスト抽出条件式
日付/時刻の抽出条件式



色々なパターンの使用例が載っていますよ。
・ツリー全体表示

【7327】Re:抽出の際
質問  TB1  - 06/2/20(月) 16:40 -

引用なし
パスワード
   まとことにすみません。
先ほど出来たと思ったのですが、コードで検索は出来るのですが、
品名で検索すると表示しないのです。先ほどのは

Private Sub Form_Load()
 Set Me.Recordset = Nothing
 
 Me.店番.ControlSource = ""
 Me.JANコード.ControlSource = ""
 Me.商品名.ControlSource = ""
 
End Sub

と、Meの部分を「名前」と同一にしました。
もしかして数値と文字では扱いが違うのでしょうか。
また迷路に入ってしまいました。どうぞご教授願います。
・ツリー全体表示

【7326】Re:クリックした時の行番号の取得方法
発言  小僧  - 06/2/20(月) 15:54 -

引用なし
パスワード
   ▼VBAの迷い子 さん:
こんにちは。

>フォームの基になっているテーブル(またはクエリ)であれば、

誤解の無い様に補足させて頂くと

>>ソート順が指定してある場合でしたら

という条件が必要です。


MS技術情報より
http://support.microsoft.com/default.aspx?scid=kb;ja;834927


ソート順を指定しないレコードセットは並び順が保証されませんので、
1度目はうまくいったとしても、2度目もそうなってくれるとは限りませんね。
・ツリー全体表示

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