Excel VBA質問箱 IV

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

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


1 / 3772 ページ 前へ→

【81077】Re:新しいシートを追加したら特定のシー...
回答[NEW]  γ  - 19/8/17(土) 20:41 -

引用なし
パスワード
   下記のイベントプロシージャを使ったらよいと思いますよ。
> Workbook.NewSheet イベント
> 新しいシートをブックに作成したときに発生します。
・ツリー全体表示

【81076】新しいシートを追加したら特定のシートに...
質問[NEW]  tarotaro  - 19/8/17(土) 19:06 -

引用なし
パスワード
   例えば
シート1にシートの一覧をつくる。

新しくシートが追加されたら、自動的にシート1に行が追加される

というのを作ることは可能でしょうか。
・ツリー全体表示

【81075】Re:範囲を選択して1セルずつコピー
お礼  riki  - 19/8/14(水) 19:21 -

引用なし
パスワード
   ▼ピンク さん:
>>1分ごとにB2,B3,B4,B5,折り返して
>myTime = Now + TimeValue("00:00:01")
>  ↓に訂正
>myTime = Now + TimeValue("00:01:00")

ご丁寧に回答いただき、ありがとうございます。
さっそく試してみます。
・ツリー全体表示

【81074】Re:範囲を選択して1セルずつコピー
発言  ピンク  - 19/8/14(水) 11:25 -

引用なし
パスワード
   >1分ごとにB2,B3,B4,B5,折り返して
myTime = Now + TimeValue("00:00:01")
  ↓に訂正
myTime = Now + TimeValue("00:01:00")
・ツリー全体表示

【81073】Re:範囲を選択して1セルずつコピー
発言  ピンク  - 19/8/14(水) 11:21 -

引用なし
パスワード
   Sub Test() では Application.Wait を使っているので
マクロ実行中はセルの操作ができないので
Application.OnTimeに変更しました。

Option Explicit
Dim myTime As Date
Dim myAddress As String
Sub 自動転記()

  If myAddress = "" Then
    myAddress = "B2"
  ElseIf myAddress = "$G$5" Then
    MsgBox "おわり"
    myAddress = ""
    Exit Sub
  ElseIf Range(myAddress).Row = 5 Then
    myAddress = Range(myAddress).Offset(-3, 1).Address
  Else
    myAddress = Range(myAddress).Offset(1).Address
  End If
  Range("A1").Copy Range(myAddress)
  myTime = Now + TimeValue("00:00:01")
  Application.OnTime TimeValue(myTime), "自動転記"
End Sub
Sub 自動転記停止()
  On Error Resume Next
  Application.OnTime TimeValue(myTime), "自動転記", , False
  myAddress = ""
  On Error GoTo 0
End Sub
・ツリー全体表示

【81072】Re:範囲を選択して1セルずつコピー
発言  ピンク  - 19/8/14(水) 7:07 -

引用なし
パスワード
   ▼riki さん:
>例えばA1の値をB2:G5の範囲に1分ごとにB2,B3,B4,B5,折り返してC2,C3・・・と
Sub Test()
  Dim c As Long, r As Long
  For c = 2 To 7
    For r = 2 To 5
      Range("A1").Copy Cells(r, c)
      Application.Wait (Now + TimeValue("00:01:00"))
    Next
  Next
End Sub
・ツリー全体表示

【81071】範囲を選択して1セルずつコピー
質問  riki  - 19/8/14(水) 2:27 -

引用なし
パスワード
   例えばA1の値をB2:G5の範囲に1分ごとにB2,B3,B4,B5,折り返してC2,C3・・・と
張り付けていきたいのですが、Range("c4:bj10").SpecialCells(xlCellTypeBlanks).Select
とするといっぺんに範囲全部にA1が張られてしまいます。
いろいろとググったのですが解らないので教えていただけたら幸いです。
・ツリー全体表示

【81070】Re:HTMLソースの取得について
お礼  Satsuki  - 19/8/8(木) 8:32 -

引用なし
パスワード
   γ さん
コメントありがとうございます。

>コメントがつきませんね。
VBAでHTMLを扱うというのはあまり一般的ではないからと思っていましたが、
質問の仕方も言葉足らずだったようで、申し訳ありません。

>>responseTextで取得したテキストそのものでは、table idの記載がありますが
>とあります。
>テキストを分析した結果の<table の数が正しいんですか?
HTMLのソースを取得するいくつかの方法の中で、URLを表示してからresponseTextを受け取るとtableの数は正しいです。

>でしたら、なぜ
>>テキストファイルで処理するしかないのでしょうか?
>という質問になるのでしょうか。
>どういう観点で手法の選択をしようとしているのでしょうか。
URLを表示してからソースを取得すると時間がかかります。
大量のページを処理するため、ページを開かずにobjectとしてソースを取得する方法に切り替えたのです。それによってHTMLの解析もしやすくなりました。

>urlの提示は無理なんでしょうか。
申し訳ありません。業務上の問題で提示は難しいです。
ただ、HTMLに詳しい人に聞いたところ、取得できないtableは、
すべてのページに表示される共通の部分のため、
動的にそのページに組み入れられているのので、
ページを表示しないとソースにでてこないのではないかとのことでした。

コメントのつかない中、お気遣いいただきありがとうございました。
・ツリー全体表示

【81069】Re:HTMLソースの取得について
発言  γ  - 19/8/7(水) 21:03 -

引用なし
パスワード
   コメントがつきませんね。
>responseTextで取得したテキストそのものでは、table idの記載がありますが
とあります。
テキストを分析した結果の<table の数が正しいんですか?
でしたら、なぜ
>テキストファイルで処理するしかないのでしょうか?
という質問になるのでしょうか。
どういう観点で手法の選択をしようとしているのでしょうか。

正直に申し上げると、
urlの提示がないので、
他人の夢の話を聞かされているようです。
ああ、そうですか、という感想しかありません。
こちらで確認する術もないですしねえ。
urlの提示は無理なんでしょうか。
・ツリー全体表示

【81068】HTMLソースの取得について
質問  Satsuki  - 19/8/5(月) 23:54 -

引用なし
パスワード
   Satsukiと申します。
いつもいろいろ教えて頂き、ありがとうございます。

今回、ローカルに保存したHTMLファイルからソースを取得し、分析するという作業を行っています。
いろいろ調べて、responseTextで取得したテキストファイルをHTMLdocumentオブジェクトにいれる方法やcreateDocumentFromUrlでオブジェクトを作成する方法などを試しました。
そのdocumentオブジェクトのテーブルの数をカウントするコードを書いて実行したところ、実際のURLを開いてソースの中を見た場合と、個数が異なっていました。
<table id〜・・・となっているテーブルがモジュール側ではカウントされていません。javascriptの中にあるわけでもないようです。
調べていくうちに、このtable idは各ページに共通する部分のためではないかと考えるようになりました。
実際、responseTextで取得したテキストそのものでは、table idの記載がありますが、documentオブジェクトに入れてしまうとspanになってしまっています。
この場合テキストファイルで処理するしかないのでしょうか?
どなたかご教示のほど、よろしくお願い致します。
・ツリー全体表示

【81067】Re:二重置換の防止方法
お礼  おのでら  - 19/8/5(月) 23:23 -

引用なし
パスワード
   ▼マナ さん:

>文字を付加して

文字の使用はバイトで考えると大変有効とは理解しております。
私も初案では返還後コードをJISで全角にして・・・と作りました。
ただ今回のコード変換は経理の仕分データの置換に使用します。置換えたコードで即次の作業です。
また私以外の方も使用します。
なので、出来るだけ作業が少なく簡単なものでと苦労しました。
貴重なアドバイスを有難うございます。
・ツリー全体表示

【81066】Re:二重置換の防止方法
発言  マナ  - 19/8/5(月) 22:36 -

引用なし
パスワード
   ▼おのでら さん:

置換の際に使用されていない文字を付加して
最後に、その文字を置換で削除するのが楽な気がします。
・ツリー全体表示

【81065】Re:二重置換の防止方法
お礼  おのでら E-MAIL  - 19/8/5(月) 22:18 -

引用なし
パスワード
   ▼マナ さん:
ありがとうございました!

検索書式の指定も必要なのですね。
しつこいことになるかと置換書式のみ指定しておりました。
望み通りの動きになりました。
大変助かりました。
・ツリー全体表示

【81064】Re:二重置換の防止方法
発言  マナ  - 19/8/5(月) 21:31 -

引用なし
パスワード
   ▼おのでら さん:
    
>置換前と置換後で書式を変えたのですが、駄目でした。マクロ自体に問題があるのか、そもそも無理なのでしょうか。    

SearchFormat:=True
・ツリー全体表示

【81063】二重置換の防止方法
質問  おのでら E-MAIL  - 19/8/5(月) 21:04 -

引用なし
パスワード
   二重置換が発生し困っております。    
エクセルで、置換とSheet1という2つのシートを用意し、置換のシートにはA,Bの列に新旧のコードを置きます。    
全部で300行くらいになります。    

Sheet1のA列に旧コードを入れ、一気に新コードに置換えたいのですが、置換の新旧に同じコード番号が含まれます。    
A    B
610    712
712    822
二重の置換にならない方法をご教示いただければと思います。    
置換前と置換後で書式を変えたのですが、駄目でした。マクロ自体に問題があるのか、そもそも無理なのでしょうか。    
 
作成マクロです
Sub 科目置換()

  ' 検索条件を設定します。
  With Application.FindFormat.Font
    .Name = "MS Pゴシック"
    .FontStyle = "標準"
    .Size = 11
  End With

  ' 置換後の書式を設定します。
  With Application.ReplaceFormat
    .Clear
    .Font.Name = "Arial"
    .Font.Color = rgbCrimson
  End With
  
Dim i As Long, k As Long, wS As Worksheet
Columns("A:B").Select
With Worksheets("置換")
For k = 1 To Worksheets.Count
If Worksheets(k).Name <> .Name Then
Set wS = Worksheets(k)
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
wS.Cells.Replace what:=.Cells(i, "A"), replacement:=.Cells(i, "B"), lookat:=xlWhole, ReplaceFormat:=True

Next i
End If
Next k
End With
MsgBox "完了"
End Sub
・ツリー全体表示

【81062】Re:シートの写真をユーザーフォームに表...
発言  マナ  - 19/8/4(日) 14:52 -

引用なし
パスワード
   ▼ナガオカ さん:

>EXCELのデータ容量が大きくなりそうなので、

大きくならないのでは?
・ツリー全体表示

【81061】Re:シートの写真をユーザーフォームに表...
質問  ナガオカ  - 19/8/4(日) 10:38 -

引用なし
パスワード
   シートにある写真は、ホームページからコピー→貼り付けした写真のため、
パソコン上には、保存していません。

シートの【開発】タブ→【挿入】→ActiveXコントロールのイメージを配置し、写真を呼び出し、それをクリックすると、フォームを起動し、上記写真をフォームのイメージにセットして、表示する方法は作成しましたが、EXCELのデータ容量が大きくなりそうなので、別な方法を教えていただきたいです。

Private Sub UserForm_Initialize()
  With Me.Image1
    .Picture = Sheet1.OLEObjects("Image1").Object.Picture
    .AutoSize = True
  End With

End Sub

シートに写真は貼り付けてますが、データはパソコンに保存していませんmm
宜しくお願いしますm(__)m
・ツリー全体表示

【81059】シートの写真をユーザーフォームに表示
質問  ナガオカ  - 19/8/4(日) 7:51 -

引用なし
パスワード
   エクセルのシートに説明文章を記述し、写真を掲載しています。
その写真をクリックしたら、ユーザーフォームへ拡大して表示したいです。

よろしくお願いしますmm
・ツリー全体表示

【81058】Re:userform上でのlabelのサイズについて
お礼  Nekomura  - 19/7/31(水) 9:41 -

引用なし
パスワード
   回答ありがとうございます。

>画像で準備しておいて、それを表示では駄目ですか。
複数の者とファイルのやり取りをする都合上、Excelファイル1つにしたいため、
別ファイル(画像ファイル)を増やすのは難があります。

また、注意文用のシートを作成して、普段見えないようにして、注意文発生の時のみ表示も考えましたが、これは別件のシステム的な理由から難しいです。
・ツリー全体表示

【81057】Re:コマンドボタン マクロの保存先のブッ...
お礼  みも  - 19/7/30(火) 22:06 -

引用なし
パスワード
   ▼マナ さん:
>▼みも さん:
>
>その画面は、登録可能なマクロの一覧であって
>「作業中のブック」に保存されているマクロだけを表示するか
>「開いている全てのブック」のマクロを表示するか
>という意味ではないでしょうか。

完全に誤解しておりました。
そのボタンを押下した際に動かすブックを設定する場所だと
思っておりました。


ご教授頂きありがとうございます。
・ツリー全体表示

1 / 3772 ページ 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free