cj_mover の回答履歴

全798件中81~100件表示
  • VBA→IEでtextareaにセル範囲の値

    エクセル2003使用です。 エクセルのセル範囲("A1:J30")の値をそのまま IEのテキストエリア(textarea)に貼り付けたいのですが、 うまくできません。 貼り付けたいテキストエリアは下記のサイトです。 http://www.tagindex.com/tool/excel_simple.html 下記のコードは、変数に代入して張り付ける方法ですが、 この方法の他に、  ・rangeプロパティーでコピー&ペースト  ・rangeプロパティーでコピー&Sendkeys "^v"    (Webのテキストエリアをフォカース済み) の方法で試しても上手くいきませんでした。 どの方法でも結構なのですが、 できましたら勉強のために、 (可能ならば)セル範囲の値を文字型変数に代入できる方法で 教えてもらえると幸いです。 --------- Option Explicit Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function GetTickCount Lib "kernel32" () As Long Sub sakusei_tbl_ikkatu() 'A1:J30に値を入力 Dim i As Long Dim j As Long Dim k As Long Dim lngNum As Long Dim varCell As Variant lngNum = 1 Sheets("sheet1").Activate varCell = Sheets("sheet1").Range("A1:J30") For i = 1 To 30 For j = 1 To 10 varCell(i, j) = lngNum lngNum = lngNum + 1 Next Next Range("A1:J30") = varCell '---------IE起動 Dim wpfreeURL As String Dim ie As Object wpfreeURL = "http://www.tagindex.com/tool/excel_simple.html" Set ie = CreateObject("InternetExplorer.application") ie.Visible = True ie.Navigate2 wpfreeURL  'Call waitNavi(ie) ←質問ではコメントアウトさせてもらいます  '---------Web画面に貼り付け Dim doc_MyTable As Object Set doc_MyTable = ie.document.getElementsByTagName("textarea") For Each doc_MyTable In ie.document.all.tags("textarea") If Trim(doc_MyTable.Name) = "data" Then doc_MyTable.Value = varCell Exit For End If Next End Sub よろしくお願いします

  • EnumChildWindowsの使い方(VBA)

    64bit版ExcelのVBAでEnumChildWindowsを使用して、子ウィンドウのウィンドウハンドルを 取得したいと考えています。 下記のようなサンプルを作ってみましたが、コールバック関数でExcelが異常終了します。 (05行目にブレークポイントを設定、各変数の値を参照しようとした時点でExcelが異常終了) また、コールバック関数の第3引数(lParam)の型をInteger,Long,LongPtr等変えてみましたが、 いずれもExcelの異常終了となりました。 つきまして、64bit Excelでの本APIの使い方を教えていただきたくよろしくお願いいたします。 (なお、32bit版のExcelでは正常に動作しました) <以下サンプルコード> 行 コード 01   Declare PtrSafe Function EnumChildWindows Lib "user32.dll" (ByVal ParenthWnd as LongPtr, ByVal EnumWindosPROC as LongPtr,ByVal lParam as Long) as Integer 02 03 04 Function ListupChildWindows(hWnd as LongPtr,lParam as Long) as Boolean 05 MsgBox hWnd 06 ListupChildWIndows =True 07 End Function 08 09 Sub test_CwinList 10 Dim ThishWnd as LongPtr 11 12 ThishWnd=Excel.Application.hWnd 13 Call EnumChildWindows (ThishWnd , AddressOf ListupChildWindows ,0) 14 End Sub

  • VBA Workbooks.open

    ブックを開くコマンド × Workbooks("filename.xls").open ○ Workbooks.open filename:="filename.xls" 何故下なのですか?ワークブックコレクションの中から特定のブックを指定し開くなら、上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。 現にブックを閉じるコマンドは Workbooks("filename.xls").close です。何故ブックを開くコマンドだけ別表現なのですか?

  • エクセルVBAで値のカウントをしたい

    C列~AA列まで値が入っています 1行目にはタイトル 2行目からそれぞれ値が入っており、終了行は毎回ランダムです 各列毎に値の合計と1以上の値の合計数を表示するために下記のマクロを使用しているのですが、もっとスマートな方法は無いでしょうか? 現在のマクロだとマクロ行数がとても多いものになっています。 Sub Count() With Range("C2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With '本当はCの最終行に直接COUNTIFを書き込みたいが、他のセルを使用しないと0になる Range("A1") = "=COUNTIF(C2:C10000,"">=1"")" Range("A1").Select Selection.Copy Range("C1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False With Range("D2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With Range("A1") = "=COUNTIF(D2:D10000,"">=1"")" Range("A1").Select Selection.Copy Range("D1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False '以降AAまでセルの位置を変えた同一マクロを繰り返す End Sub

  • エクセルVBAで値のカウントをしたい

    C列~AA列まで値が入っています 1行目にはタイトル 2行目からそれぞれ値が入っており、終了行は毎回ランダムです 各列毎に値の合計と1以上の値の合計数を表示するために下記のマクロを使用しているのですが、もっとスマートな方法は無いでしょうか? 現在のマクロだとマクロ行数がとても多いものになっています。 Sub Count() With Range("C2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With '本当はCの最終行に直接COUNTIFを書き込みたいが、他のセルを使用しないと0になる Range("A1") = "=COUNTIF(C2:C10000,"">=1"")" Range("A1").Select Selection.Copy Range("C1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False With Range("D2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With Range("A1") = "=COUNTIF(D2:D10000,"">=1"")" Range("A1").Select Selection.Copy Range("D1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False '以降AAまでセルの位置を変えた同一マクロを繰り返す End Sub

  • エクセルVBAで値のカウントをしたい

    C列~AA列まで値が入っています 1行目にはタイトル 2行目からそれぞれ値が入っており、終了行は毎回ランダムです 各列毎に値の合計と1以上の値の合計数を表示するために下記のマクロを使用しているのですが、もっとスマートな方法は無いでしょうか? 現在のマクロだとマクロ行数がとても多いものになっています。 Sub Count() With Range("C2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With '本当はCの最終行に直接COUNTIFを書き込みたいが、他のセルを使用しないと0になる Range("A1") = "=COUNTIF(C2:C10000,"">=1"")" Range("A1").Select Selection.Copy Range("C1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False With Range("D2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With Range("A1") = "=COUNTIF(D2:D10000,"">=1"")" Range("A1").Select Selection.Copy Range("D1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False '以降AAまでセルの位置を変えた同一マクロを繰り返す End Sub

  • VBA Workbooks.open

    ブックを開くコマンド × Workbooks("filename.xls").open ○ Workbooks.open filename:="filename.xls" 何故下なのですか?ワークブックコレクションの中から特定のブックを指定し開くなら、上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。 現にブックを閉じるコマンドは Workbooks("filename.xls").close です。何故ブックを開くコマンドだけ別表現なのですか?

  • マクロが、うまくいかなくなった。

    A:3に出勤数が表示されます。 出勤がある場合d:3にハイパーリンクがあるので、リンク先の2ページめを印刷同じ 作業を下の段にのも繰り返す。 うまく動いていたのですが、新しくPCに移した当たりから 動かなくなりました。 厳密には 二人まではプリントするのですが、下の段までいかないみたいです。? この様なメッセージが ↓ 実行エラー9 インデックスが有効範囲にありません 下のマクロの どの部分を書き換えれば動きますか? Sub 請求明細自動印刷() Application.ScreenUpdating = False Dim I As Integer Dim リンクシート As String For I = 3 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(I, "A") <> 0 Then リンクシート = Cells(I, "D").Hyperlinks(1).SubAddress リンクシート = Left(リンクシート, InStr(リンクシート, "!") - 1) Sheets(リンクシート).PrintOut From:=2, To:=2 End If Next I End Sub

  • フィルタを設定しているエクセルで全て選択にしたい

    フィルタを設定してあるエクセルで、自動でフィルタを全て選択にしたいのですが、 そのようなことは出来ますでしょうか? 共有ファイルで前に使っていた人がフィルタをかけてそのまま保存した場合、 フィルタがかかっているところを探して、全て選択を選ぶのが面倒です。

  • VBA 新規にエクセルを開き既存のファイルを開く

    VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。

  • マクロが、うまくいかなくなった。

    A:3に出勤数が表示されます。 出勤がある場合d:3にハイパーリンクがあるので、リンク先の2ページめを印刷同じ 作業を下の段にのも繰り返す。 うまく動いていたのですが、新しくPCに移した当たりから 動かなくなりました。 厳密には 二人まではプリントするのですが、下の段までいかないみたいです。? この様なメッセージが ↓ 実行エラー9 インデックスが有効範囲にありません 下のマクロの どの部分を書き換えれば動きますか? Sub 請求明細自動印刷() Application.ScreenUpdating = False Dim I As Integer Dim リンクシート As String For I = 3 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(I, "A") <> 0 Then リンクシート = Cells(I, "D").Hyperlinks(1).SubAddress リンクシート = Left(リンクシート, InStr(リンクシート, "!") - 1) Sheets(リンクシート).PrintOut From:=2, To:=2 End If Next I End Sub

  • VBAでDATEDIF関数の埋め込み

    VBAでエクセル関数のDATEDIF関数でJ3から始まりその列の最後に入力された次の空白セルに関数を埋め込みたいのですがうまくいきません、どなたか教えてください。 現在の式は Range("J"&NewDataRow)、Value=,=IF(DATEDIF(E3,Today(),"Y")>80,"大型中止",OK)ですがE3の結果が出ます、列には途中違う計算式も入っていくことになるので入力した行の計算結果がほしいのです。よろしくお願いします

  • フィルタを設定しているエクセルで全て選択にしたい

    フィルタを設定してあるエクセルで、自動でフィルタを全て選択にしたいのですが、 そのようなことは出来ますでしょうか? 共有ファイルで前に使っていた人がフィルタをかけてそのまま保存した場合、 フィルタがかかっているところを探して、全て選択を選ぶのが面倒です。

  • VBAをExcel2010/2013で利用

    下記URLのサンプルファイルに含まれるVBAで作成されたユーザー定義関数について、 Excel2003(Windows7)の環境で利用することが出来ました。 http://www.relief.jp/itnote/archives/003799.php しかしながら、Excel2010およびExcel2013(ともにWindows7)で開くと、結果が #VALUE! と変わってしまい、正しく表示されませんでした。 VBAの参照設定でも同じものにチェックを入れている状態ですが、うまくいきません。 (ただし、Microsoft Excel XX.X Object LibraryやMicrosoft Office XX.X Object Library などバージョンの差異はあり) Excel2010またはExcel2013において、このユーザー定義関数を 正しく利用できる方法が分かりましたらご教示いただけますと助かります。

  • エクセルマクロで列を削除したい

    エクセル2013です。 マクロの途中で列を削除するようにしてあります。 A列~J列、N列~Q列、T列~U列、W列~Y列を一括削除なのですが A列~J列だけは、作業者が選択した1列だけを残して削除をしたいです。 マウスで選択させて、列を指定する所までは作成できましたが 列削除の部分(★の部分)が 思うように作成できず完成できません。 アドバイスをお願いいたします。 Sub 列削除() Dim マウス選択 Dim 選択列 Dim 選択月表示 Dim 質問 On Error GoTo myError 'INPUT-BOXでキャンセルを選択した時の回避 Set マウス選択 = Application.InputBox("回覧用に編集したい月の列を選択してください", Type:=8) If マウス選択.Columns.Count > 1 Then '選択したしたのが列で有り1列であるか確認 MsgBox "選択したのは列ではありません。又は2列以上を選択しています" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If If マウス選択.Rows.Count > 1 Then '選択したのが行又はセルの場合の処理 Else MsgBox "行又はセルを選択しています。1列を選択してください" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If Set マウス選択 = マウス選択.EntireColumn Debug.Print マウス選択.Address 選択列 = マウス選択.Column 'INPUT-BOXで選択した列を数字に置き換える 選択月表示 = Cells(2, 選択列).Value '選択した列の8行目のセルの値を格納 If 選択列 > 10 Then '選択したのが11列以上の場合の処理 MsgBox "11列目以降は選択できません" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If 質問 = MsgBox("選択した月は " & 選択月表示 & " です。いいですか?", vbYesNo) If 質問 = vbYes Then MsgBox "処理を行います" '不要列削除 ★ Union(Columns("A:J"),Columns("N:Q"), Columns("T:U"), Columns("W:Y")).Delete Else MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If Exit Sub 'エラーが出なかった時のmyErrorの回避用 myError: 'INPUT-BOXでキャンセルを押した時の処理 MsgBox "キャンセルが押されました。プログラム終了します。" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub End Sub

  • 【ExcelVBA】英数記号の半角変換

    こんにちは。 Excel2013を使用しています。 カタカナは全角、英数記号は半角で表示を統一したく、ネットで検索したサンプルコードを範囲や条件等を変更して下記コードを作成しました。 (サンプルコードが記載されていたページに簡易な例で全ての場合に対応できていないとの但し書きがありました。) 下記コードを実行すると、記号のうち、括弧、中点については半角表示になりますが、#については全角表示のままです。 Mid(rData, i, 1) Like "#" の Like を = に変更して、Mid(rData, i, 1) = "#" とすると、#についても半角表示になりました。 “全ての場合に対応できていない”に該当するものなのかもしれませんが、Like では希望する結果を得られない理由は何なのか気になり、質問させていただきました。 よろしくお願いします。 -------------------------------------------------- Sub test() Dim c As Range Dim i As Integer Dim rData As Variant, ansData As Variant For Each c In Range(Cells(3, "D"), Cells(Cells(Rows.Count, "D").End(xlUp).Row, "D")) ansData = "" For i = 1 To Len(c.Value) rData = StrConv(c.Value, vbWide) If Mid(rData, i, 1) Like "[A-z]" Or Mid(rData, i, 1) Like "[0-9]" _ Or Mid(rData, i, 1) Like "(" Or Mid(rData, i, 1) Like ")" _ Or Mid(rData, i, 1) Like "・" Or Mid(rData, i, 1) Like "#" Then ansData = ansData & StrConv(Mid(rData, i, 1), vbNarrow) Else ansData = ansData & Mid(rData, i, 1) End If Next i c.Value = ansData Next c End Sub

  • プログラムの手直しを手伝って頂けないでしょうか?

    した記載のサンプルプログラムの手直しを手伝って頂けないでしょうか? どうしても以下の問題が克服できずに困っています。 宜しくお願い致します。 ※コピー元を非表示にしてVBAでコピーすると、設定していた印刷範囲がリセットされるのを回避したい。 ※コピーしたワークシートを最後(右側)に置きたい。 ※コピーしたワークシート名を日付(201408XX)としたい。  同日にワークシートをもう一枚コペーした場合は(201408XX_(1))とかにしてエラー回避をしたい。 Sub サンプル() ' Dim sc As Integer ' sc = Application.SheetsInNewWorkbook ' Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー With Worksheets.Add 'シート追加 .Range("A1").PasteSpecial Paste:=xlValues '値貼り付け .Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け .Name = "コピー" End With Application.CutCopyMode = False ' Application.SheetsInNewWorkbook = sc ' ActiveWorkbook.Close ' ThisWorkbook.Activate End Sub

  • プログラムの手直しを手伝って頂けないでしょうか?

    した記載のサンプルプログラムの手直しを手伝って頂けないでしょうか? どうしても以下の問題が克服できずに困っています。 宜しくお願い致します。 ※コピー元を非表示にしてVBAでコピーすると、設定していた印刷範囲がリセットされるのを回避したい。 ※コピーしたワークシートを最後(右側)に置きたい。 ※コピーしたワークシート名を日付(201408XX)としたい。  同日にワークシートをもう一枚コペーした場合は(201408XX_(1))とかにしてエラー回避をしたい。 Sub サンプル() ' Dim sc As Integer ' sc = Application.SheetsInNewWorkbook ' Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー With Worksheets.Add 'シート追加 .Range("A1").PasteSpecial Paste:=xlValues '値貼り付け .Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け .Name = "コピー" End With Application.CutCopyMode = False ' Application.SheetsInNewWorkbook = sc ' ActiveWorkbook.Close ' ThisWorkbook.Activate End Sub

  • 文字を入力したセル以降のセルも同じ文字になるVBA

    Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Range ActiveSheet.Protect UserInterfaceOnly:=True Set R = Union(Range("D5:D38"), Range("E5:E38"), Range("T5:T38")) With Target If Intersect(.Cells, R) Is Nothing Then Exit Sub Application.EnableEvents = False Range(Cells(.Row, .Column), Cells(38, .Column)).Value = .Value Application.EnableEvents = True End With End Sub この様なコードがあるのですが範囲を変更したいと思います。 D5:D38は上記コードのままで良いのですが、E5;E38はE5:E36に、T5:T38はT5:T36に変更するにはどうすれば良いのでしょうか?

  • 【エクセルVBA】シェイプのサイズとセルの縦横

    マクロのインプット部分として、四角い図形を置けばそのサイズに合わせてセルの高さと幅を決めてくれるような処理を作りたいと思っています 基本的に四角いシェイプを選択した状態で開始するマクロで Sub selectObjectsToArea()   targetAreaTop = Selection.Top   targetAreaLeft = Selection.Left   targetAreaRight = targetAreaLeft + Selection.Width   targetAreaBottom = targetAreaTop + Selection.Height     Workbooks.Add   Set testSheet = ActiveSheet   testSheet.Rows(1).RowHeight = targetAreaTop   testSheet.Columns(1).ColumnWidth = targetAreaLeft   testSheet.Rows(2) = targetAreaBottom - targetAreaTop   testSheet.Columns(2) = targetAreaRight - targetAreaLeft end sub これでtestSheetのB2セルが、もともとのシートの四角いシェイプの置いてあった位置と同じ位置、同じ大きさの四角… になるつもりなのですが、なぜかかなり横に長い平たい四角になってしまいます CentimetersToPoints関数というのがあるということを知ったのですが、これを使用しても比率が変わるだけ エクセルの幅と高さをピクセルで指定するというページで 幅11.8ポイント:100ピクセル 高さ75ポイント:100ピクセル というのがあったのですが、ピクセルとセンチの比率がわからず 調べているうちにその比率は解像度によって違ってくる…というような話がでてきて どう整理してよいのかわからなくなってしまいました シェイプの位置と大きさをセルの幅に変換する方法がわかる方がいらっしゃったらご指導をお願いいたします