Excel VBA質問箱 IV

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

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


44 / 3841 ページ ←次へ | 前へ→

【81624】別のExcelブックを閉じると、ユーザーフ...
質問  稲垣  - 21/1/27(水) 17:23 -

引用なし
パスワード
   お世話になっております。
当方、Office Professional Plus 2016を使用しています。

ユーザーフォームを表示・マクロの実行中に次の操作をしたいと考えています。

1.別のブックを開封
2.別のブックのセル内容を編集・マクロの実行等を実施
3.別のブックを閉じる

1.2.は操作可能なのですが、3.の際にユーザーフォームが同時に閉じてしまいます。

ユーザーフォームを表示・マクロの実行をしたまま、3.の操作をすることは可能でしょうか。
お手数をお掛けしますが、宜しくお願い致します。
・ツリー全体表示

【81623】Re:csv内のソース部分セルをそれぞれhtm...
発言  γ  - 21/1/27(水) 16:27 -

引用なし
パスワード
   返事がありませんが、話が多分違っているんでしょうな。
既存のhtmlの所定の場所にということなんだろうね。
しかし一切のそういう説明が無いから無理というもの。

こうしたテキスト処理はPythonなりRubyのほうが
簡単に書けるはずです。そういう方向でスキルを
高めたほうが良いと思います。以上とします。
・ツリー全体表示

【81622】Re:csv内のソース部分セルをそれぞれhtm...
発言  γ  - 21/1/26(火) 18:14 -

引用なし
パスワード
   そういう仕様で使えるのか私には不明ですが、一応。

Excelに読み込んである前提です。
以下を標準モジュールにコピーして、
そのシートがアクティブである状態で、
マクロtestを実行してみてください。
カレントフォルダにHTMLが保存されるはずです。(確認済み)

Sub test()
  Dim v
  Dim k    As Long
  Dim fname  As String
  Dim s    As String
  
  v = Range("A1").CurrentRegion
  For k = 2 To UBound(v, 1)
    fname = v(k, 1) & ".HTML"
    s = v(k, 3)
    Open fname For Output As #1
    Print #1, s
    Close #1
  Next
End Sub
修正はそちらで適宜お願いします。
・ツリー全体表示

【81619】Re:csv内のソース部分セルをそれぞれhtm...
質問  ふたば E-MAIL  - 21/1/26(火) 15:51 -

引用なし
パスワード
   ▼γ さん:
>○○とか××はどこにあるんですか?
>一行一行違うということですか?

説明不足大変失礼いたしました。

それぞれA列の「商品ID」がファイル名になると一番ありがたいです。
<div><p>美味しいリンゴです</p></div>が「00001.html」に、
<div><p>お得なミカンです</p></div>が「00002.html」に…
といった形です。
どうぞよろしくお願いいたします。
・ツリー全体表示

【81618】Re:csv内のソース部分セルをそれぞれhtm...
発言  γ  - 21/1/26(火) 15:28 -

引用なし
パスワード
   ○○とか××はどこにあるんですか?
一行一行違うということですか?
・ツリー全体表示

【81617】Re:指定のアドレスに送信させる
発言  γ  - 21/1/26(火) 15:26 -

引用なし
パスワード
   こんな風にするとよいと思います。
 SendKeys "%s"

 Application.Dialogs(xlDialogSendMail).Show arg1:="abc@def.co.jp";,arg2:="test", arg3:=False

Outlook以外は手元に無いので、明確なことは言えません。
周囲に環境があったら確認してみてください。
・ツリー全体表示

【81616】csv内のソース部分セルをそれぞれhtmlフ...
質問  ふたば E-MAIL  - 21/1/26(火) 11:49 -

引用なし
パスワード
   ECサイト修正の仕事をしております。
商品ページのデータを落としたcsvがあるのですが、そのうちのソース部分のセルを、VBAを用いてすべてそれぞれhtmlファイルに書き出したいです。

例)
商品ID,商品名,ページ内ソース
00001,りんご,<div><p>美味しいリンゴです</p></div>
00002,みかん,<div><p>お得なミカンです</p></div>


(数百行)

といった形のcsvから、
「<div><p>美味しいリンゴです</p></div>」を○○.htmlに、「<div><p>お得なミカンです</p></div>」を××.htmlに、としたいのです。

恥ずかしながらVBAやマクロは全くの初心者です。
なんとか処理のコードのヒントを頂けないでしょうか。
どうぞよろしくお願いいたします。
・ツリー全体表示

【81615】Re:指定のアドレスに送信させる
質問  ソロ  - 21/1/26(火) 9:59 -

引用なし
パスワード
   ▼γ さん:
>"ExcelVBA ブックをメールで送信する"でネット検索して下さい。

γ さん
早速の回答ありがとうございます。

調べた結果以下のコードが見つかりました。
こちらを利用するとメールが出来上がるのですが、送信までさせる場合はどのコードが必要でしょうか?

また、わたしが使うとoutlookでメールが作成されるのですが
outlookを利用していない人がこのマクロを使うと、その人のいつも使っているメールソフトで実行されるという認識でよいでしょうか?

Sub Sample1()

Application.Dialogs(xlDialogSendMail).Show _
arg1:="Sample1@****.com";, arg2:="サンプル表示です", _
arg3:=True
 
'xlDialogSendMailは「arg1⇒宛先」、「arg2⇒件名」
'「arg3⇒受信通知有無」の指定のみ出来ます

End Sub
・ツリー全体表示

【81614】Re:指定のアドレスに送信させる
発言  γ  - 21/1/25(月) 19:49 -

引用なし
パスワード
   "ExcelVBA ブックをメールで送信する"でネット検索して下さい。
・ツリー全体表示

【81613】指定のアドレスに送信させる
質問  ソロ  - 21/1/25(月) 13:29 -

引用なし
パスワード
   マクロのスイッチを押すと、そのExcelファイルが指定のアドレスに送信されるマクロを組みたいです。
・ツリー全体表示

【81612】Re:n番目のシートから最後のシートまで...
回答  γ  - 21/1/24(日) 19:09 -

引用なし
パスワード
   n= 3 '例
For tst = n To Sheets.Count
  Set ws = Sheets(tst)
としてみて下さい。

ちなみに、Sheets("n")は"n"という文字列のシート名のシートの意味です。
・ツリー全体表示

【81611】Re:ユーザーフォームにおける日付検索に...
発言  γ  - 21/1/24(日) 18:56 -

引用なし
パスワード
   日付の検索はデータがどのような形式かに依存します。
何度か試行錯誤するのが普通です。
私だったら日付を整数に変換してから(CLng(CDate(s))のような)、
Match関数を使うかもしれません。

このほか日付の検索については、下記のスレッドを参考にしてトライしてみて下さい。
ht tp://officetanaka.net/excel/vba/tips/tips131.htm
ht tp://officetanaka.net/excel/vba/tips/tips131b.htm
・ツリー全体表示

【81610】Re:ユーザーフォームにおける日付検索に...
質問  VBA初心者  - 21/1/24(日) 18:09 -

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

早速のご返信ありがとうございます。

日付からデータを引き出してユーザーフォーム上で修正をかける作業と、ユーザーフォームから指定した日付の列に入力ができればと考えております。

他サイト等で似たような作業を探して以下の2つのコードを試してみたのですが、
シリアル値への変換やvbaの基本的な事柄の理解が進んでおらず、うまくいっておりません。

初歩的で拙い質問で申し訳ありませんが、ご教示いただけますと幸いです。
よろしくお願いいたします。


Private Sub CommandButton1_Click()
 
 
 Dim r As Long

 r = WorksheetFunction.Match(DateValue(TextBox1), Columns("A"), 0).Row
 
 TextBox2.Text = Cells(r, 2)

 
End Sub


Private Sub CommandButton1_Click()

 Dim r As Long

 r = Columns("A").Find(DateValue(TextBox1), LookIn:=xlFormulas).Row
 
 TextBox2.Text = Cells(r, 2)

 
End Sub
・ツリー全体表示

【81609】n番目のシートから最後のシートまで繰り...
質問  ct  - 21/1/24(日) 17:21 -

引用なし
パスワード
   全部のシートではなく、
指定したシート(Sheets("n"))から最後のシート(Sheets.Count)まで
繰り返し処理をしたいのですが思うようにいきません。

以下、書いたコード
Dim tst As Integer
For tst = Sheets("n") To Sheets(Sheets.Count)

処理

Next

これで実行すると
オブジェクトは、このプロパティまたはメソッドをサポートしていません
とエラーが出ます。

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

【81608】Re:ユーザーフォームにおける日付検索に...
発言  γ  - 21/1/24(日) 16:54 -

引用なし
パスワード
   Userfirmは主要ポイントではなく、ポイントは
ワークシート上の検索ですよね。
VLookup関数を使っても良いですし、
基本的操作ですからネット上にも、お持ちのテキストにも
いろいろ記事があるのでは?
ご自分ではどこまでできていますか?
・ツリー全体表示

【81607】ユーザーフォームにおける日付検索につい...
質問  VBA初心者  - 21/1/24(日) 16:08 -

引用なし
パスワード
   VBA初心者です。

A列に日付、B列に金額が入力してあるシートで、
TextBox1に日付を入力し、Commandbutton1を押すと
TextBox2に金額が転記されるというマクロを組みたいと思っています。

MATCH関数を用いたもの、Findメソッドを用いたもの
どちらもご教示願えませんでしょうか。
よろしくお願い致します。
・ツリー全体表示

【81606】Re:重複Key毎の合計を求める
お礼  assya  - 21/1/22(金) 12:03 -

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

アドバイスいただきありがとうございました!
Yさんからもコメントいただき、解決いたしました。

本当にありがとうございました。
・ツリー全体表示

【81605】Re:重複Key毎の合計を求める
お礼  assya  - 21/1/22(金) 12:01 -

引用なし
パスワード
   ▼γ さん

何度もありがとうございます。
いただいたコードを参考に、手元で作っていたものとマージしたところ、実現したいことができました!!
そしてdictionaly変数に関しても理解が深まりました。(なんとなく理解したつもりでいたのですが全然でした...)

指定したkeyに対して再度格納するには [dic変数]([key名]) = [入れる変数] で入れれるのですね。
自分の作ったコードは色々処理を入れているうちに結局この倍ぐらいの長さになってしまったので見直してみます。。

本当にありがとうございました。
・ツリー全体表示

【81604】Re:重複Key毎の合計を求める
発言  γ  - 21/1/21(木) 23:24 -

引用なし
パスワード
   遅くなりました。

dictionaryとは、
Key → Item
という対応関係を管理する容れ物です。

・Keyは文字列とか数値などをとることが多いですが、
・Itemも色々なものを保持することができます。
既に提示されたのは、配列の行番号をとったものですが、
(提示された方法のように)配列そのものを持たせることもできます。

こんな感じになるでしょう。参考にしてみて下さい。

Sub test()
  Dim dic As Object
  Dim k As Long, j As Long, r As Long
  Dim s As String
  Dim v As Variant
  Dim itm As Variant
  Dim key As Variant

  Set dic = CreateObject("Scripting.Dictionary")

  For k = 2 To 10
    s = Cells(k, 1).Value
    If Not dic.Exists(s) Then
      v = Cells(k, 2).Resize(1, 6).Value
      dic(s) = v
    Else
      'いったん取り出し
      itm = dic(s)

      '各要素に加算
      v = Cells(k, 2).Resize(1, 6).Value
      For j = 1 To 6
        itm(1, j) = itm(1, j) + v(1, j)
      Next

      '再度 格納
      dic(s) = itm
    End If
  Next
  Sheet2.Range("A2").Resize(dic.Count, 1) = Application.Transpose(dic.keys)

  '結果をシートに書き出す
  r = 1
  For Each key In dic
    itm = dic(key)
    r = r + 1
    Sheet2.Cells(r, 2).Resize(1, 6) = itm
  Next
End Sub

考え方に焦点を当てていますので、元データの行数や列数とか、
転記先の一行目の項目名、などは適当にしています。
そちらで修正して下さい。
また、各配列は、あえて一次元に変換せず、二次元のままにしています。
・ツリー全体表示

【81603】Re:重複Key毎の合計を求める
発言  マナ  - 21/1/21(木) 18:42 -

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

γさんの、ここを含む掲示板での回答を見て
わたしも使えるようになった方法です。

空の2次元配列を用意して、
各要素に加算を繰り返すことで集計します。
dictionaryには、配列のindexを登録していす。

Sub test()
  Dim dic As Object
  Dim w()
  Dim r As Long, c As Long
  Dim v
  Dim s As String
  Dim n As Long
  
  Set dic = CreateObject("scripting.dictionary")
  
  v = Range("A1:G9").Value
  
  ReDim w(1 To UBound(v, 1), 1 To UBound(v, 2))
  
  For r = 1 To UBound(v, 1)
    s = v(r, 1)
    If Not dic.exists(s) Then
      dic(s) = dic.Count + 1
      w(dic(s), 1) = s
    End If
    n = dic(s)
    For c = 2 To UBound(v, 2)
      w(n, c) = w(n, c) + v(r, c) '★ここで加算
    Next
  Next
  
  Range("A21").Resize(dic.Count, UBound(w, 2)).Value = w
  
End Sub
・ツリー全体表示

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