Excel VBA質問箱 IV

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

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


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

【78407】ダブルクォーテーション置換
質問  はてなな  - 16/9/13(火) 10:30 -

引用なし
パスワード
   ダブルクォーテーション置換

vbaで、

"A" & "B"を
' 'A' ' & ' ' B' ' に変更したいです。

セルの先頭のクォーテーションが変換できません。
以下になります。

 A' ' & ' ' B' '


どうしたらいいですか?

""""を
"' '"に置換してます。
・ツリー全体表示

【78406】Re:エクセルからの削除、リネーム後の保存
発言  β  - 16/9/13(火) 8:21 -

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

ファイルの移動であれば、開かなくても、VBA標準機能の Name ステートメント
あるいは FSO の ファイルオブジェクト.Move メソッドやファイルオブジェクト.MoveFIleメソッドで
直接移動処理が可能です。
・ツリー全体表示

【78405】エクセルからの削除、リネーム後の保存
質問  Todd  - 16/9/13(火) 6:53 -

引用なし
パスワード
   お世話になっております。
下記のエクセル操作についてご相談させて下さい。

エクセルより.txtデータを読み込み、読み込み後
元の.txtデータをリネーム(名前:after 日付け、保存時間)し、
別フォルダに保存。この際、もとの.txtデータは削除する
というマクロを作成したいと考えております。

.txtデータの読み込みまでは出来ましたが、
その後はどのように作成すればよいか、お知恵を拝借できれば幸いです。

宜しくお願い致します。

以上
・ツリー全体表示

【78404】表をPPTに貼り付ける際のオブジェクト名...
質問  nao  - 16/9/12(月) 15:53 -

引用なし
パスワード
   グラフと表をPPTに貼り付けたいのですが、グラフは貼り付けられるのですが
表が貼り付けられずエラーになります。

Sub Prop(New_Name As String, New_GrpFlg As Boolean, New_SldNmb As Integer, _
     New_Top As Single, New_Left As Single, New_Width As Single, New_Height As Single, New_Odr As Integer)
    
    
 'インスタンス生成
 With New Class1
  .Name = New_Name 'オブジェクト名
  .GrpFlg = New_GrpFlg '図表フラグ
  .SldNmb = New_SldNmb 'スライド番号
  .Top = New_Top '上からの位置
  .Left = New_Left '左からの位置
  .Width = New_Width '横幅
  .Height = New_Height '横幅
  .Odr = New_Odr '順番
  Objs.Add .Self 'Objsコレクションに追加
 End With
End Sub


Call Prop("グラフ 12", True, 18, 4.53 * 28.35, 0.56 * 28.35, 11.3 * 28.35, 10.02 * 28.35, 0)
 Call Prop("グラフ 13", True, 19, 3.63 * 28.35, 28.35, 23.6 * 28.35, 12.23 * 28.35, 0)
 Call Prop("グラフ 14", True, 22, 3.23 * 28.35, 0, 15.23 * 28.35, 15.82 * 23.85, 0)
 Call Prop("テーブル3", False, 14, 3.65 * 28.35, 13.03 * 28.35, 11.47 * 28.35, 11.54 * 28.35, 0)
 Call Prop("deta2", False, 16, 3.65 * 28.35, 13.03 * 28.35, 11.47 * 28.35, 8.2 * 28.35, 0)
 Call Prop("AI17:AL20", False, 18, 3.65 * 28.35, 13.03 * 28.35, 11.48 * 28.35, 4.86 * 28.35, 0)

On Error GoTo ERROR_HANDLER

 Set ppApp = CreateObject("PowerPoint.Application")
 Set ppPst = ppApp.ActivePresentation

 Dim Obj As Class1
 For Each Obj In Objs
  '指定範囲をクリップボードにコピー
  If Obj.GrpFlg = True Then
   'グラフの場合
   ThisWorkbook.Sheets(ShtNam).ChartObjects(Obj.Name).Copy
  Else
   '表の場合
   ThisWorkbook.Sheets(ShtNam).ChartObjects(Obj.Name).CopyPicture xlScreen, xlPicture

  End If
  'PowerPointスライド指定
  Set ppSld = ppPst.Slides(Obj.SldNmb)
  '貼り付け
  ppSld.Shapes.Paste

テーブル名、名前の定義、範囲選択と試したのですが
いずれも、『指定した名前のアイテムが見つかりませんでした。』とエラーになります。
表の場合、どのように書けば取れますでしょうか?
・ツリー全体表示

【78403】Re:グラフを既存PPTに複数貼り付けたい
お礼  nao  - 16/9/12(月) 15:43 -

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

有難うございます。
・ツリー全体表示

【78402】Re:グラフを既存PPTに複数貼り付けたい
発言  マナ  - 16/9/10(土) 9:55 -

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

>ちょっとまだ苦戦してますが配列使ってやってみようと思います。

グラフ挿入するsubプロシージャを作成し、
変化する部分は、引数で指定するとよいかもしれません。
・ツリー全体表示

【78401】Re:グラフを既存PPTに複数貼り付けたい
お礼  nao  - 16/9/9(金) 16:09 -

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

有難うございます!
確かに変数もれてました。
ちょっとまだ苦戦してますが配列使ってやってみようと思います。

アドバイス有難うございました!
・ツリー全体表示

【78400】Re:グラフを既存PPTに複数貼り付けたい
発言  マナ  - 16/9/8(木) 23:54 -

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

>↓ですと、上しかループせず2枚のPPTにたくさんグラフが貼り付けられてしまいます。


パワーポイントは、まったくわかりませんので、参考程度に。
下のループで、変数名の修正もれがあるような気がします。
・ツリー全体表示

【78399】Re:VBAでExcelグラフをPPTに貼り付け
発言  nao  - 16/9/8(木) 17:32 -

引用なし
パスワード
   28.35をかけることで解決しました。
・ツリー全体表示

【78398】グラフを既存PPTに複数貼り付けたい
質問  nao  - 16/9/8(木) 17:21 -

引用なし
パスワード
   初心者です。
ExcelグラフをPPTに貼り付けるのですが、位置やサイズが違うため似たような処理を書かなくては成りません。
↓ですと、上しかループせず2枚のPPTにたくさんグラフが貼り付けられてしまいます。
やりたいのは、PPTのページによってグラフの位置やサイズを変えて貼り付けたいです。位置やサイズの取得は出来ているようです。PPTのページが11ページ、12ページにいってくれません。
どのように書けばいいのかご教示ください。

Sub select_CopyToPPT()
 Dim ppApp As Object 'PowerPointアプリ
 Dim ppPst As Object 'PowerPointプレゼン
 Dim ppSld As Object 'PowerPointスライド
 Dim n As Integer, shp As Object
 Dim PecNmb As Integer, ShtNam As Variant, GrpNmb As Variant, SldNmb As Variant
 Dim PecNmb2 As Integer, ShtNam2 As Variant, GrpNmb2 As Variant, SldNmb2 As Variant

 '処理したいExcelグラフの数
 PecNmb = 2
 'コピーしたいExcelグラフが存在するシート名
 ShtNam = Array("グラフ", "グラフ")
 'コピーしたいExcelグラフの名前
 GrpNmb = Array("グラフ 4", "グラフ 6")
 '貼り付け先PowerPointのスライド番号
 SldNmb = Array(7, 8)

 On Error GoTo ERROR_HANDLER

 Set ppApp = CreateObject("PowerPoint.Application")
 Set ppPst = ppApp.ActivePresentation

 For n = 0 To PecNmb - 1
  '指定範囲をクリップボードにコピー
  Sheets(ShtNam(n)).ChartObjects(GrpNmb(n)).Copy
  'PowerPointスライド指定
  Set ppSld = ppPst.Slides(SldNmb(n))
  '貼り付け
  ppSld.Shapes.Paste

  '位置・サイズを補正
  With ppSld.Shapes(ppSld.Shapes.Count) '最終シェイプを処理
   '.LockAspectRatio = msoTrue '縦横比固定
   .Top = 5.2 * 28.35 '上からの位置
   .Left = 0.9 * 28.35 '左からの位置
   .Width = 23.64 * 28.35 '横幅
   .Height = 10.42 * 28.35 '縦幅
   .ZOrder msoSendToBack '最背面へ移動
  End With
  flg = False 'フラグリセット
 Next n


 '処理したいExcelグラフの数
 PecNmb2 = 2
 'コピーしたいExcelグラフが存在するシート名
 ShtNam2 = Array("グラフ", "グラフ")
 'コピーしたいExcelグラフの名前
 GrpNmb2 = Array("グラフ 7", "グラフ 8")
 '貼り付け先PowerPointのスライド番号
 SldNmb2 = Array(11, 12)

 On Error GoTo ERROR_HANDLER

 Set ppApp = CreateObject("PowerPoint.Application")
 Set ppPst = ppApp.ActivePresentation

 For n = 0 To PecNmb - 1
  '指定範囲をクリップボードにコピー
  Sheets(ShtNam(n)).ChartObjects(GrpNmb(n)).Copy
  'PowerPointスライド指定
  Set ppSld = ppPst.Slides(SldNmb(n))
  '貼り付け
  ppSld.Shapes.Paste

  '位置・サイズを補正
  With ppSld.Shapes(ppSld.Shapes.Count) '最終シェイプを処理
   '.LockAspectRatio = msoTrue '縦横比固定
   .Top = 2.9 * 28.35 '上からの位置
   .Left = 0 * 28.35 '左からの位置
   .Width = 12.58 * 28.35 '横幅
   .Height = 10.85 * 28.35 '縦幅
   .ZOrder msoSendToBack '最背面へ移動
  End With
  flg = False 'フラグリセット
 Next n
 
TERMINATE:
 On Error GoTo 0
 Set ppApp = Nothing
 Set ppPst = Nothing
 Set ppSld = Nothing
 Exit Sub

ERROR_HANDLER:
 MsgBox Err.Description, vbCritical
 Resume TERMINATE


End Sub
・ツリー全体表示

【78397】VBAでExcelグラフをPPTに貼り付け
質問  nao  - 16/9/8(木) 15:50 -

引用なし
パスワード
   VBA殆ど初心者です。
グラフをPPTへの貼り付け方はわかったのですが、既存のPPTにグラフを置く位置指定をしたいんですが、どのように書けばいいんでしょうか?

PPTのほうでcmの位置はわかるのですが下のように書くと表示されません。
まさかcmを書いてもエラーになるし

.Top = 5.2 '上からの位置
.Left = 0.9 '左からの位置
.Width = 23.6 '横幅


.Top = 100 '上からの位置
   .Left = 60 '左からの位置
   .Width = 600 '横幅
こう書いた場合には表示はされますが、思った位置に表示されません。
どのように書くのがいいのでしょうか?
・ツリー全体表示

【78396】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/8(月) 20:41 -

引用なし
パスワード
   ご存じだと思いますが、VBAからIEを操作する関係は、
↓のサイトが有用です。
ht tp://www.ken3.org/cgi-bin/group/vba_ie.asp

frame関連は下記です。
ht tp://www.ken3.org/cgi-bin/group/vba_ie_frame.asp
ここらあたりを勉強されたらいかがでしょうか。

これだけだと何ですから、上記をもとにリンク先取得のコードを
書いてみました。

# あなたの場合にうまくいくかは不明です。
# こちらでテストした限りはOKでしたが、サイトにより色々な作り方がありますので。

-----------
Sub ie_frame()
  
  Dim objIE  As InternetExplorer  'IEオブジェクト参照用

  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True

  objIE.Navigate "ht tp://・・・・" ' 対象となるサイトページ

  '表示終了まで待つ
  Do While objIE.Busy = True
    DoEvents
  Loop

  Dim objFRAME As FramesCollection
  Set objFRAME = objIE.Document.frames 'フレームの代入

  Debug.Print "フレームの数は" & objFRAME.Length

  'ドキュメントオブジェクトの代入
  Dim objDOC  As HTMLDocument   'HTMLドキュメント
  Set objDOC = objFRAME(0).Document 'フレームのドキュメントをセット

  Debug.Print objDOC.Links(0).href 'リンク先のurlを出力

End Sub
・ツリー全体表示

【78395】Re:フォームのTextBoxをフォーカス時に選...
発言  β  - 16/8/8(月) 14:03 -

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

連投失礼。

もし、ユーザーフォームだとして

>Enterイベントの処理が走った後に、クリックが最後にきているから?

この意味がよくわかりませんが CommandButton 等のクリックと、この話はどう関連してくるのでしょうか?

それと、このユーザーフォーム表示はモーダルですか、モードレスですか?
・ツリー全体表示

【78394】Re:フォームのTextBoxをフォーカス時に選...
発言  β  - 16/8/8(月) 13:58 -

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

もしかして・・・
フォームコントロールというのは ユーザーフォームの話でしょうか??
・ツリー全体表示

【78393】Re:フォームのTextBoxをフォーカス時に選...
発言  β  - 16/8/8(月) 13:52 -

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

コメントしたように、いまいち、やりたいことがわからないのですが

たとえば標準モジュールに以下のマクロを書いておき、フォームツールのテキストボックスに
このマクロを、マクロ登録する ということなんでしょうか?

Sub Test()
  ActiveSheet.Shapes(Application.Caller).TextFrame2.TextRange.Characters.Select
End Sub
・ツリー全体表示

【78392】Re:フォームのTextBoxをフォーカス時に選...
発言  β  - 16/8/8(月) 13:45 -

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

ActiveXであればイベント処理が可能ですけどフォームコントトールですよね?
フォームコントロールは、そもそも、gotFocus であれ、Enterであれ、なんであれ、イベントそのものがありませんが?
・ツリー全体表示

【78391】フォームのTextBoxをフォーカス時に選択...
質問  himuro  - 16/8/8(月) 13:29 -

引用なし
パスワード
   こんにちは。

activeXコントロールばかり触っていたので、今フォームコントロールを弄っているのですが、色々違いがあり戸惑っております。

activeXだと、テキストボックスフォーカス時に全選択状態にするには、
gotFocusイベントに
With TextBox1
.SelStart = 0
.SelLength = Len(.text)
End With
のような感じで書けばいけるのですが、

フォームにはgotFocusが無いので、Enterイベントがそれに当たるのかなと思い同じコードを書いたのですが、全選択されません。

Enterイベントの処理が走った後に、クリックが最後にきているから?

と思い、MouseDownイベントで今は代用しているのですが、これではケースによっては不都合が生じる場合もありそうですし、何よりしっくりきません。
何故Enterイベントでは駄目なのか・・。

これは仕様ですか?

環境:Excel2013, office32bit
・ツリー全体表示

【78390】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/7(日) 17:37 -

引用なし
パスワード
   このページの最初に、
「迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。」
と記載されています。

皆さん、ht tp://・・・・ などと、ダミーでスペースを入れたりして
工夫されているようです。
・ツリー全体表示

【78389】ソースコードその3
発言    - 16/8/7(日) 14:09 -

引用なし
パスワード
   もう少し残骸があるんですが、
ここのボードの禁止コードに引っかかるようで
載せられません。
とりあえず、アップ出来る範囲で残骸を載せておきました。
私の頭と同じで、スパゲッティになってますが‥。(笑)
・ツリー全体表示

【78388】ソースコード残骸その2
発言    - 16/8/7(日) 14:04 -

引用なし
パスワード
   Set Doc = objIE.document

Set objFrame = Doc.frames("search").document

Dim i As Long

For i = 0 To Doc.Links.Length - 1
Debug.Print Doc.Links(i).href
Next i

  For Each o In Doc.getElementsByTagName("a") ' ***ヤ〇〇〇 id=m***
    If o = "javascript:chgFrameUrl('./***')" Then
      o.Click
      Exit For
    End If
  Next o

  Set o = objIE.document.getElementById("m***")
  o.Click
・ツリー全体表示

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